Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用getline读取文件和标准输入的结果不同_C++_Regex_C++11_Boost - Fatal编程技术网

C++ 使用getline读取文件和标准输入的结果不同

C++ 使用getline读取文件和标准输入的结果不同,c++,regex,c++11,boost,C++,Regex,C++11,Boost,我的假设是打印第二行,因为testfile的第一行实际上是 IDK 3453443+输入 我说的对吗?) 但真正的问题是,当我像这样启动它时:/a.out,输入“IDK 3453443”,然后按enter键。其结果是: TESTING LINE : IDK 3453443 0 TESTING LINE : 0 有没有想过为什么这两个结果不同?事实上,线端是罪魁祸首 在十六进制编辑器中查看该文件,您将发现0d0a行结束(Windows或CRLF),代码期望UNIX行结束(仅LF) 现场观看:

我的假设是打印第二行,因为testfile的第一行实际上是

IDK 3453443+输入

我说的对吗?)

但真正的问题是,当我像这样启动它时:
/a.out
,输入“IDK 3453443”,然后按enter键。其结果是:

TESTING LINE : IDK 3453443
0
TESTING LINE : 
0

有没有想过为什么这两个结果不同?

事实上,线端是罪魁祸首

在十六进制编辑器中查看该文件,您将发现
0d0a
行结束(Windows或CRLF),代码期望UNIX行结束(仅LF)

现场观看:

TESTING LINE : IDK 3453443
1
您可以通过在末尾“吃掉”所有空格来解决此问题:

TESTING LINE : IDK 3453443
1

现在两者都被接受。

您确定文件中没有
\r
之前的
\n
?那可能是罪魁祸首。。。尝试
string模式=“[]*([A-Z]{3})([0-9]+)([]*|,[0-9]+\\s*)”。或者
regex\u search
而不是
regex\u match
。不幸的是,新模式在@stribizev仍然不起作用
std::string pattern = "[ ]*([A-Z]{3}) ([0-9]+)(,[0-9]+)?\\s*";