0
我想從包含幾行的字符串中讀取數據作爲標記。 我使用的代碼strtok如何處理換行符?
char * pch;
pch = strtok ((char*)MyStr.c_str()," ,|,\n"); int i = 0;
while (pch != NULL && i++ < 10)
{
cerr << i << ':' << pch << ' ';
pch = strtok (NULL, " ,.-");
}
輸入是
std::string SP1271 = "1271,1\n"
"0,44248,8,45040,20,1,0,100\n"
"545,590,603,564,566,598,569,585,586,578\n";
和輸出
1:1271 2:1
0 3:44248 4:8 5:45040 6:20 7:1 8:0 9:100
545 10:590
是否合法使用 '\ n' 作爲分隔符?
爲什麼不編譯和檢查? – kabanus
在常量'c_str()'return上使用'strtok'並不是一個好主意(強制非const轉換,骯髒的黑客!!)。你應該看看真正的方法來根據_real_ C++中的分隔符來分割文本。 –
是的,使用'\ n'作爲分隔符是合法的。這是一個像其他人一樣的角色。但請注意,您只在第一個'strtok'調用中通過'\ n'作爲分隔符,而不是在任何後續調用中。這就是爲什麼'1 \ n0''結束爲一個單一的標記 - 不是因爲'\ n'在某種程度上是特殊的,而是因爲你不把它當作任何標記的分隔符,而是作爲第一個。 –