在两行上打印类似"FirstnSecond"的字符串
Print a string like "First Second" on two lines
目的:从文件中读取FirstnSecond
形式的字符串并将其打印为
First
Second
问题:如果字符串是在代码中定义的,如在line = "FirstnSecond";
中,那么它打印在两行上;如果我从文件中读取它,则打印为
FirstnSecond
说明问题的简短程序:
#include "stdafx.h" // I'm using Visual Studio 2008
#include <fstream>
#include <string>
#include <iostream>
void main() {
std::ifstream ParameterFile( "parameters.par" ) ;
std::string line ;
getline (ParameterFile, line) ;
std::cout << line << std::endl ;
line = "FirstnSecond";
std::cout << line << std::endl ;
return;
}
参数.par 文件仅包含以下行
FirstnSecond
Win32 控制台输出为
C:blabla>SOtest.exe
FirstnSecond
First
Second
有什么建议吗?
在 C/C++ 字符串文字 ("...") 中,反斜杠用于标记特殊字符的所谓"转义序列"。编译器 将两个字符"\"(ASCII 代码 92)后跟"n"(ASCII 代码 110)转换为换行符(ASCII 代码 10)。在文本文件中,通常只需按 [RETURN] 键即可插入换行符。如果您确实需要处理包含两个字符"\"和"n"的输入,并希望像 C/C++ 编译器一样处理它们,则必须将它们显式替换为换行符:
replace(line, "\n", "n");
您必须提供如下所示的替换函数:将字符串的一部分替换为另一个字符串(标准C++本身不提供此类替换函数。
C/C++ 和类似编译器支持的其他转义序列:
- \t -> [制表符]
- \" -> "(与普通 " 区分开来,它标记字符串文字的结尾,但不是字符串本身的一部分! \
- \ -> \ (允许在字符串文本中使用反斜杠;单个反斜杠启动转义序列)
转义序列n
在字符串文本中指示的字符与看起来像n
的字符序列不同!
当你认为你在分配FirstnSecond
时,你不是。在源代码中,字符串文本中的n
是不可见换行符的"快捷方式"。字符串不包含n
- 它包含换行符。它会自动为您转换。
而您从文件中读取的是实际字符和
n
。
相关文章:
- C++算法标头中,为什么要使用 "!(val < *first)" ?
- 迭代嵌套映射与范围为循环:没有名为"first"的成员
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 为什么 std::d istance() 对于 std:list:<int>:itrator 在 last 在 first 之前时不返回负数?
- c std :: vector迭代器构造函数,first == last
- 如何声明pair<int,int>::first
- 自动,错误:MAP ITERATOR没有名为“ First”的成员
- "Node<T*> *first"和"Node<T> *first"有什么区别?
- 为什么 std::find_if(first, last, p) 不通过引用获取谓词?
- 我怎样才能保持'first'和'second'用结构替换 std::p air?
- 从 iterator.first 获取价值
- 使用 Qt 创建器时出错:"multiple definition" "first defined here"
- Spirit Qi First Parser
- 为什么"begin/end"与"first/last"的差异?
- c++ in Depth First Search
- 队列返回错误的 pair.first 值
- Atmel / Arduino:ISR(TIMER0_OVF_vect)无法编译("first defined"__vector_16)
- C++ 字符串迭代器"find first of"
- gl_triangle_fan First(Center)顶点正常
- 在两行上打印类似"FirstnSecond"的字符串