我在想是否有可能在c ++中创建一个包含数据的字符串,我不想创建一串字符串或字符串数组
假设我有一个字符串mv
mv =
“你好
新
世界“
你好,新的和世界是不同的。如果我们打印mv然后你好,新的和世界应该出现在不同的行。
我还在考虑竞争性编程,如果在一个字符串中连接所有查询的答案,然后逐个输出答案或cout所有查询,那么两个输出中都会有时间差
答案 0 :(得分:1)
如果我不明白你的问题是错的。 这是你的答案,在每一行的末尾添加一个转义字符。
string mv =“hello \ n \
新\ n \\
世界\ n“个;
\ n - >新线
\ - >逃避角色
以下是工作示例:
Example
string mv = "hello\n\
new\n\
world\n";
答案 1 :(得分:0)
您只需将\ n字符添加到字符串即可创建新行。
cout << "Hello \n New \n World" << endl;
这将输出:
Hello
New
World
答案 2 :(得分:0)
我希望我的字符串变量以这种格式存储信息 就像我的字符串变量mv应该在第一行和一些字符串中有一些字符串 第二行的字符串,整个应该像单个字符串一样工作
C ++中的字符串(std::string
)是什么?
它是一个容器,用于配置动态可调整大小的字符数组 用于操纵该数组的方法。
一个字符数组是:
characters: |c0|c1|c2|c3|...|cN|
这是std::string
的本质。你无能为力。
什么是行(文字)?
C ++或任何其他编程中没有行的正式定义 语言。 行是一种属于阅读和写作的视觉概念 文字排列在二维空间中。一条线垂直在上方或下方 另一个。
计算机不会在二维空间中排列数据。他们安排好了 线性,一维,存储。没有数据垂直高于或低于任何其他数据。
但是编程语言当然可以代表文本行和它们 所有人都遵循同样的惯例。通常,行是一个数组 以换行符结尾的字符。
新行序列本身就是一个包含一个或两个字符的数组,具体取决于
在您的操作系统的约定。 Windows使用2个字符的序列
carriage-return,line-feed
。类Unix操作系统使用1个字符
序列line-feed
。你可以研究这个主题
Wikipedia: Newline。但对于
可移植性,在C ++源代码中的换行序列 - 无论它实际上是什么 -
由escape sequence表示
\n
,您可以在源代码中使用它,就像它是一个角色一样。
所以字符数组:
|h|e|l|l|o|\n|
表示文本行:
hello
在C ++中。和字符数组:
|h|e|l|l|o|\n|n|e|w|\n|w|o|r|l|d|\n|
代表三行文字:
hello
new
world
如果您想将该数组存储在单个std::string
中,C ++允许您执行此操作
像这样:
std::string s0{'h','e','l','l','o','\n','n','e','w','\n','w','o','r','l','d','\n'};
或者更方便的是这样:
std::string s1{"hello\nnew\nworld\n"};
或者甚至 - 如果您对使用\n
转义序列有恐惧感 - 就像这样:
std::string s2
{R"(hello
new
world
)"};
所有这些将三行存储在一个字符串中的方法都可以创建 该字符串中的相同字符数组,即:
|h|e|l|l|o|\n|n|e|w|\n|w|o|r|l|d|\n|
它们都创建完全相同的std::string
。
如果您打印任何这些字符串,您会看到相同的内容,例如 这个程序:
#include <string>
#include <iostream>
int main() {
std::string s0{'h','e','l','l','o','\n','n','e','w','\n','w','o','r','l','d','\n'};
std::string s1{"hello\nnew\nworld\n"};
std::string s2 // Yes...
{R"(hello
new
world
)"}; // ...it is meant to be formatted like this
std::cout << "--------------" << std::endl;
std::cout << s0;
std::cout << "--------------" << std::endl;
std::cout << s1;
std::cout << "--------------" << std::endl;
std::cout << s2;
std::cout << "--------------" << std::endl;
return 0;
}
输出:
--------------
hello
new
world
--------------
hello
new
world
--------------
hello
new
world
--------------