MFC中CEdit多行情況下,呼叫GetLine()時,發現老是後面跟有亂碼【轉載】
MFC中CEdit多行情況下,呼叫GetLine()時,發現老是後面跟有亂碼。即使你把str初始化也是如此。
對於採用GetLine()呼叫,其函式說明有2種。1.int GetLine( int nIndex, LPTSTR lpszBuffer ) const; 2.int GetLine( int nIndex, LPTSTR lpszBuffer, int nMaxLength ) const;程式碼如下: char str[10] = {'/0'};
int nLineNum;//想要獲取的行號
nLineNum=0;
m_ctlEditTest.GetLine(nLineNum,str); Remarks : The copied line does not contain a null-termination character. 看了下msdn,一句話說得很明白,getline做了copy後是不給你加null結束符的。因此需要自己在定義的char字串末尾新增。而一次實際上會copy回多少個位元組。則在該函式的說明中,在msdn中清晰表達為: Return Value The number of bytes actually copied. The return value is 0 if the line number specified by nIndex is greater than the number of lines in the edit control. 所以,上面的程式碼段得用一個值取得實際長度,把多餘的擷取掉,但我在用getline1時老是返回0,不知道為何?不過改成getline2,指定copy9個位元組時,同時對第10個位元組設定為null則正常返回,沒有亂碼的出現。如下 int iLen = m_ctlEditTest.GetLine(nLineNum,str, 9); str[10] = '/0'; 即可。 。。。。。。。 在cedit中還有個linelength函式,
int LineLength( int nLine = -1 ) const;
- nLine
-
Specifies the character index of a character in the line whose length is to be retrieved. If this parameter is –1, the length of the current line (the line that contains the caret) is returned, not including the length of any selected text within the line. When LineLength
int LineIndex( int nLine = -1 ) const;
- Contains the index value for the desired line in the text of the edit control, or contains –1. If nLine is –1, it specifies the current line, that is, the line that contains the caret.
int nLineNum;
nLineNum=0;
m_ctlEditTest.GetLine(nLineNum,strTemp.GetBufferSetLength(m_ctlEditTest.LineLength(m_ctlEditTest.LineIndex(nLineNum))));
strTemp.ReleaseBuffer(); 。。。。。。 總而言之,感覺vc中mfc太過於細節,莫免麻煩。但是感覺經歷過一次後,就不再是磕腳的石頭,而是心態的放心。也許,這是心理作用而已。
相關推薦
MFC中CEdit多行情況下,呼叫GetLine()時,發現老是後面跟有亂碼【轉載】
MFC中CEdit多行情況下,呼叫GetLine()時,發現老是後面跟有亂碼。即使你把str初始化也是如此。 對於採用GetLine()呼叫,其函式說明有2種。 1.int GetLine( int nIndex, LPTSTR lpszBuffer ) co
多執行緒的程序呼叫exec時,將終止整個程序
由於本人才疏學淺,本文難免存在遺漏之處,歡迎大家留言指正,本人將感激不盡。 最近比較好奇,若是一個多執行緒的程序執行exec()系統呼叫時,程序將作何反應,詳情請如下程式碼: #include <stdio.h> #include <st
matlab 遍歷兩層資料夾,對兩層資料夾進行改變圖片大小處理【轉載】
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_htmledit_views-
哥們別逗 了,寫個指令碼那真不叫運維自動化! 【轉載】
好久沒寫文章了,最近要來刷下存在感,近兩年,運維自動化被炒的火的不行,行業趨勢不可擋,現在企業招運維工程師都要求會一門開發語言。我們公司也不例外,由於剛上市,一下子有錢了,開始招兵買馬瞎折騰,因此最近我也面試了不下十來個求職者,本成想可以很容易招到幾個不錯的小夥,結果卻
InnoDB引擎,從大表中刪除多行
int ota man erro delete mysql 最小 following 可能 官方建議: InnoDB Tables If you are deleting many rows from a large table, you may exceed the l
SQL 將一條記錄中多個字段的值拼接為一個字段 && 將多行數據合並成一行,並且拼接CONVERT() 、for xml path的使用
varchar start 技術分享 現在 date rom 結果 技術 ont 接著上篇文章的訂單表(商品編號,價格設置時間id(類似於創建時間,創建時間約早,則act_id越小) ,價格的時間段,商品價格) 一、將一條記錄中多個字段的值拼接為一個字段 現要求將兩個時間
Python多版本情況下四種快速進入交互式命令行的操作技巧
ext 進入 nbsp 情況 交互 菜單 只需要 創建 如何 因為工作需求或者學習需要等原因,部分小夥伴的電腦中同時安裝了Python2和Python3,相信在Python多版本的切換中常常會遇到Python傻傻分不清楚的情況,今天小編整理了四個操作技巧,以幫助大家解決這個
easyui 判斷select下拉框是否多選,多選情況下清空預設值
$("#checkType").combobox({ onSelect: function(param){ if (param
sqlserver中,如何把一列中的多行資料在一行顯示
SQL code問題描述: 無論是在sql 2000,還是在 sql 2005 中,都沒有提供字串的聚合函式, 所以,當我們在處理下列要求時,會比較麻煩: 有表tb, 如下: id value ----- ------ 1 aa 1 bb 2
GridView中存在多行資料,如何獲取資料表主鍵值以對某一整行資料進行編輯
<%-- asp.net初學者,還請大神多多提點--%> 程式碼如下: protected void grvMHN_RowEditing(object sender, GridViewE
sql 如何同時更改一列中的多行值
sql如圖,我要把 pre_tel 列 都加上 010 或者其他區號,但是如何用同一條 sql 語句實現?sql 如何同時更改一列中的多行值
循環刪除DataTable.Row中的多行問題
datarow for datatable eight nbsp family let -- 永遠 在C#中,如果要刪除DataTable中的某一行,大約有以下幾種辦法: 1,使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows
在函數被裝飾的情況下如何取消裝飾器,訪問原始函數
date 訪問 tool ror 幫助信息 函數 auth art run 在函數被裝飾器裝飾的情況下,需要保持原始函數的文檔,幫助信息等信息,或者直接調用原始函數,此時需要引入wraps模塊 #!/usr/bin/env python #coding:utf-8 [em
mysql中的多行查詢結果合並成一個(轉)
get asc 數據 利用 sel tor _id and ont SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 AND
SQL中將某個表中的多行數據在一個字段顯示
ack 查詢 style 顯示 isp dex OS AC for 項目需求:將某個表中的多行數據在一個字段顯示,如下: 比如表A中有字段 ID,NAME, 表B中有字段ID,PID,DES, 表A,表B中的數據分別如下: ID NAME1 張三2 李四 ID PID DE
SoapUI中 code 多行顯示設置
ngs adding 們的 git ces auto AS The strong 你們的SoapUI 有設置下面的選項嗎? 1. Before adding your project, we recommend that you enable the follo
輸入輸出流讀取本機txt文件:不能將中文字元流轉化為char 因為char一個位元組,中文在UTF-8的情況下是三個位元組,會出現字元流擷取
package interview; import org.junit.Test; import java.io.*; public class TestInOrOutStream { class m { @Test void x(){ Sys
不刪除資料情況下轉換檔案系統型別,從FAT32轉到NTFS
轉換檔案系統型別,從FAT32轉到NTFS(不刪除資料) 如果是從NTFS轉FAT32就不能用下面的方法,需要備份你的資料之後再格式化 最近下完電影想把電影傳到U盤裡,結果顯示檔案過大不能傳,然後看了看我的U盤屬性是FAT32,FAT32是不支援4G以上的檔案傳輸的,所以需要改變
elementUI el-select 多選情況下包含全部選項,及獲得選中項的label
<template> <div> <span style="margin-left:30px;font-weight:bolder;">教練: <el-select v-model="staffId" pla
Error Handling Functions(微軟對於出錯的情況下提供的所有函式,比如SetThreadErrorMode,SetErrorMode,SetLastErrorEx,FatalAppExit,CaptureStackbackTrace)
The following functions are used with error handling. Function Description Beep Generates simple t