C++;带行尾的字符串以文件空行 我在做什么: 我用JavaScript读取CSV文件,并将它们发送到C++ WebServer /后端,将文件上传到服务器。此文件通过HTTP POST请求以字符串形式发送到Web服务器 在JavaScript中,文件被正确读取并发送到C++,代码为< > \r\n行结束。 问题是:
将字符串放入服务器上新创建的.csv文件时C++;带行尾的字符串以文件空行 我在做什么: 我用JavaScript读取CSV文件,并将它们发送到C++ WebServer /后端,将文件上传到服务器。此文件通过HTTP POST请求以字符串形式发送到Web服务器 在JavaScript中,文件被正确读取并发送到C++,代码为< > \r\n行结束。 问题是:,c++,string,csv,line-endings,C++,String,Csv,Line Endings,将字符串放入服务器上新创建的.csv文件时 std::string data = // the parsed http body string std::ofstream file; file.open(UPLOAD_DIR + "\\" + filename); file << data; file.close(); (我知道,带分号的CSV不符合RFC)提供的评论解决了这个问题: 我现在只是从字符串中删除每个\r,而不是用\r\n替换出现的\r\n,这就解决了我的问题。提供的
std::string data = // the parsed http body string
std::ofstream file;
file.open(UPLOAD_DIR + "\\" + filename);
file << data;
file.close();
(我知道,带分号的CSV不符合RFC)提供的评论解决了这个问题:
我现在只是从字符串中删除每个
\r
,而不是用\r\n
替换出现的\r\n
,这就解决了我的问题。提供的注释解决了这个问题:
我现在只是从字符串中删除每一个
\r\n
,而不是用\n
替换每一个\r
,这就解决了我的问题。问题可能不是你想的那样
创建文件并将字符串放入其中,但每次换行后都会有空行
不,该文件是一个非常好的CSV文件。大多数实现(即使是允许不同分隔符和引号字符的实现)都同意行分隔符为2个字符“\r\n”
因此,问题只来自于您用来显示文件的工具或您试图读取文件的方式
这只是我的意见,但我强烈建议您不要从csv文件中删除'\r'
字符
我认为正确的方法是将文件作为二进制文件处理。这样,在将
'\n'
写入文件时,您就不会依赖操作系统对其转换方式的解释。问题可能不在您认为的位置
创建文件并将字符串放入其中,但每次换行后都会有空行
不,该文件是一个非常好的CSV文件。大多数实现(即使是允许不同分隔符和引号字符的实现)都同意行分隔符为2个字符“\r\n”
因此,问题只来自于您用来显示文件的工具或您试图读取文件的方式
这只是我的意见,但我强烈建议您不要从csv文件中删除'\r'
字符
我认为正确的方法是将文件作为二进制文件处理。这样,在将
'\n'
写入文件时,您就不会依赖操作系统对其转换方式的解释。我试图通过写入来重新创建您的文件写入std::of流文件(“mine.txt”);
文件我试图通过写入重新创建您的文件
std::of流文件(“mine.txt”);
文件你能在你的问题中粘贴一小段示例字符串,这样我们就可以复制它吗?它看起来像是给你“解析的http正文字符串”的“解析器”,不做换行翻译。@Someprogrammerdude这是可能的。数据是用C++中的RAPIDJSON解析的JSON对象的一部分发送的。您的意思是,字符串在写入文件之前可能格式不正确?我无法使用coliru并显示在屏幕上,或使用MSV并写入文件。请记住,在Windows上,换行符是“\r\n”
。写入以文本模式打开的文件时,系统会将“\n”
转换为“\r\n”
。现在,如果您的字符串已经是“\r\n”
,那么将写入文件的是“\r\r\n”
。您能在您的问题中粘贴一小段示例字符串,以便我们可以复制它吗?它看起来像是“解析器”,它提供“解析的http正文字符串”,而不进行换行翻译。@Someprogrammerdude,这是可能的。数据是用C++中的RAPIDJSON解析的JSON对象的一部分发送的。您的意思是,字符串在写入文件之前可能格式不正确?我无法使用coliru并显示在屏幕上,或使用MSV并写入文件。请记住,在Windows上,换行符是“\r\n”
。写入以文本模式打开的文件时,系统会将“\n”
转换为“\r\n”
。现在,如果您的字符串已经是“\r\n”
,那么将写入文件的是“\r\r\n”
。
Time [s];Temperature [C]\r\n0;1150\r\n0.1;1150\r\n0.2;1150\r\n0.3;1150\r\n0.4;1150\r\n0.5;1150\r\n0.6;1150\r\n0.7;1150\r\n0.8;1150\r\n0.9;1150\r\n1;1150\r\n1.1;1150\r\n1.2;1150\r\n1.3;1150\r\n1.4;1150\r\n1.5;1150\r\n1.6;1150\r\n1.7;11
1 49
2 50
3 51
32
13
a 97
b 98
c 99
32
13
32
10
8 56
9 57
0 48