如何在c ++中的字符串中添加一个新行

时间:2017-07-29 08:44:15

标签: string c++11

我在想是否有可能在c ++中创建一个包含数据的字符串,我不想创建一串字符串或字符串数​​组 假设我有一个字符串mv
mv =
“你好
 新
 世界“ 你好,新的和世界是不同的。如果我们打印mv然后你好,新的和世界应该出现在不同的行。

我还在考虑竞争性编程,如果在一个字符串中连接所有查询的答案,然后逐个输出答案或cout所有查询,那么两个输出中都会有时间差

3 个答案:

答案 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
--------------

Live demo