char PrintText[256];
值为“1234567\n以上数字请确认”,其中
PrintText[7]="\"
PrintText[8]="n"
将PrintText[256]显示在messagebox上时,仍然为“1234567\n以上数字请确认”,没有自动换行
请问如何解决?
(ps:用CString的话比较简单,但是因为某种原因目前不能用CString,这样的前提下有办法没有呢?)
值为“1234567\n以上数字请确认”,其中
PrintText[7]="\"
PrintText[8]="n"
将PrintText[256]显示在messagebox上时,仍然为“1234567\n以上数字请确认”,没有自动换行
请问如何解决?
(ps:用CString的话比较简单,但是因为某种原因目前不能用CString,这样的前提下有办法没有呢?)
PrintText[8]="n"\n是一个字符,写错了这里
\是转义字符。可以对n进行转义,\n 就是换行 '\t' 就是tab,'\\'实际就是我们理解上的\
PrintText[7]="\"
PrintText[8]="n"
就不是换行符了
PrintText[8]="n"
是我debug程序的时候,watch这个数组时看到的呀,不是我主动这样写的啊!
回车换行
PrintText[7]="\"
PrintText[8]="n"
这个是怎么回事呢?
char PrintText[256];
GetPrivateProfileString("abc", "123", NULL, PrintText, 256, "\\testWord.ini");GetPrivateProfileString()函数读取外部ini文件,并将指定项的值读进数组PrintText中,是个系统函数
读取后,我watch这个PrintText数组,就发现:
PrintText[7]="\"
PrintText[8]="n"
不知道哪里错了啊?
PrintText[8]="\n";
最后用了一个for循环,逐个检查PrintText数组元素,发现值等于“\”的,(例如索引为i),就重新赋值为:
PrintText[i]="\r";
紧接着下一个(索引i+1)值为“n”的,也重新赋值为:
PrintText[i+1]="\n";
这样终于搞定了。这个方法很无奈,但的确解决了问题。
如果有更好的方法,请达人明示。
你写在ini里面写\n与在编译器里面写\n是不同的概念,ini会忠实的保留你输入的字符,但编译器会把你的\n转译成0xa即换行符。
如果你既想换行显示又想把东西写在ini里面,你就必须自己去做编译器所作的事,查找"\\n"(\\会被转译为\),并替换为"\n",当然最好是"\r\n"。
你可以试试,写一下PrintText[7] = '\r', PrintText[8] = '\n'作测试,这时你会发现换行了。