我不能将一个新行添加到C++字符串

问题描述:

如何添加一个新行到一个C++字符串?我试图读取一个文件,但是当我试图追加'\ n'它不起作用。我不能将一个新行添加到C++字符串

std::string m_strFileData; 
while(DataBegin != DataEnd) { 
    m_strFileData += *DataBegin; 
    m_strFileData += '\n'; 
    DataBegin++; 
} 
+26

你是什么意思 “它不工作” 吗?你的电脑会融化吗?你的狗喝你所有的啤酒吗?什么? – dreamlax 2010-11-08 21:12:51

+0

如果您使用Visual Studio进行调试,则可能在调试器中看不到它。 – dalle 2010-11-08 21:15:20

+0

@dalle - 好点,使用文本可视化工具来看所见即所得的版本 – 2010-11-08 21:42:54

这会在每个字符或字符串后添加一个换行符,具体取决于DataBegin的实际类型。你的问题不在于你给出的代码示例。如果给出预期的和实际的结果以及变量的数据类型,那将会更有用。

如果您有很多要处理的行,使用stringstream可能会更有效。

ostringstream lines; 

lines << "Line 1" << endl; 
lines << "Line 2" << endl; 

cout << lines.str(); // .str() is a string 

输出:

Line 1 
Line 2 

只是一个猜测,但也许你应该改变字符的字符串:

m_strFileData += '\n'; 

是这样的:

m_strFileData += "\n"; 
+2

'+ ='运算符支持两种方式。 – 2010-11-08 21:22:16

对不起关于最近的答案,但我有一个类似的亲直到我意识到Visual Studio 2010 char* visualiser忽略\r\n字符。它们完全从它中省略。

注意:通过visualiser我的意思是当您将鼠标悬停在char*(或string)上时看到的内容。

试试这个:

ifstream inFile; 
inFile.open(filename); 
std::string entireString = ""; 
std::string line; 

while (getline(inFile,line)) 
{ 
    entireString.append(line); 
    entireString.append("\n"); 
}