2010-11-08 72 views
4

如何添加一個新行到一個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

回答

1

這會在每個字符或字符串後添加一個換行符,具體取決於DataBegin的實際類型。你的問題不在於你給出的代碼示例。如果給出預期的和實際的結果以及變量的數據類型,那將會更有用。

8

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

ostringstream lines; 

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

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

輸出:

Line 1 
Line 2 
1

只是一個猜測,但也許你應該改變字符的字符串:

m_strFileData += '\n'; 

是這樣的:

m_strFileData += "\n"; 
+2

'+ ='運算符支持兩種方式。 – 2010-11-08 21:22:16

2

對不起關於最近的答案,但我有一個類似的親直到我意識到Visual Studio 2010 char* visualiser忽略\r\n字符。它們完全從它中省略。

注意:通過visualiser我的意思是當您將鼠標懸停在char*(或string)上時看到的內容。

0

試試這個:

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

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