【发布时间】:2013-04-28 13:26:10
【问题描述】:
我有以下功能:
void process (std::string str)
{
std::istringstream istream(str);
std::string line;
std::string specialStr("; -------- Special --------------------\r"); // win
//std::string specialStr("; -------- Special --------------------"); //linux
while (getline(istream,line))
{
if (strcmp(specialStr.c_str(), line.c_str()) != 0)
{
continue;
}
else
{
//special processing
}
}
}
我使用 getline 逐行读取 std::istringstream 中的行,直到我“遇到”特殊字符串
之后我应该对下一行进行一些特殊处理。
特殊字符串是:
; -------- Special --------------------
当我在 windows 中读取相应的行时,它以 '\r' 结尾:
(; -------- Special --------------------\r)
在 Linux 中,末尾不会出现“\r”。
有没有办法在不区分是linux还是windows的情况下一致地读取行?
谢谢
【问题讨论】:
-
您是否以二进制模式打开了流?
-
std::string str; // 是一个参数 std::istringstream isaStream(str);//这样我打开了stringstream
-
你从哪里得到
str的内容? (你可以发布一些代码,你知道的) -
我得到 str 作为参数。我会发布一些代码 - 你是对的
-
@jrok - 我已按照您的要求更新了代码
标签: c++ getline istringstream