2017-07-29 33 views
1

我在想,如果有可能在C++中包含数据的字符串中包含数据,我不想做一串或一串字符串 假设我有一个字符串MV
MV =
“你好

世界”
你好,新的世界是不同的线路。现在,如果我们打印的MV那么hello,新的世界应该来在不同的行。如何把一个新的行在一个字符串中的c + +

我也想在关于竞争力的节目,如果串联查询的所有答案在一个单一的字符串,然后输出回答或COUT通过一个所有查询一个,将有两个输出

一个时间差
+0

除非我错了,你可以使用换行符 '\ n' 字符串 – 2017-07-29 08:48:29

+0

内我试图串连 '\ n'但它打印的'\ n' –

+1

显示代码与这个“不工作”连接 –

回答

0

我想我的字符串变量来保存该信息格式因此 像我的字符串变量mv应该有一些字符串在第一行和一些 字符串在第二行,这整个应该像英格尔串

什么是C++中的字符串std::string)?

它是一个容器,用于动态调整大小的字符数组,配备了 以及用于操作该数组的方法。

字符数组是:

characters: |c0|c1|c2|c3|...|cN| 

这是一个std::string的性质。对此你无能为力。

什么是(文字)?

在C++中没有对或任何其他编程 语言的正式定义。A line是一种视觉概念,属于阅读和书写排列在二维空间中的文字 。其中一行垂直位于或低于 。

计算机不会在二维空间中安排数据。他们安排在 线性,一维,存储。没有数据垂直高于或低于任何其他数据。

但是当然编程语言可以代表代表文本行,它们都是按照相同的约定来完成的。通常,是以新行序列结尾的 字符的阵列。

一个新行序列本身就是一个或两个字符数组,对操作系统的依赖公约 。 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

0

您可以将\ n字符添加到字符串以创建一个新行。

cout << "Hello \n New \n World" << endl; 

这将输出:

Hello 
New 
World 
+0

我希望我的**字符串变量**以这种格式存储信息,因此就像我的字符串变量mv应该有一些字符串在fi第一行和第二行的一些字符串,这整个应该像一个字符串一样工作 –

+0

@MrinalVerma似乎你误解了基本的C++概念,什么是“字符串控制字符串”? –

1

如果我没有理解你的问题是错误的。 这是你的答案,在每行的末尾添加一个转义字符。

串MV = “你好\ n \
新\ n \
世界\ n”;

\ n - >新行
\ - >转义符

这里是工作示例: Example

string mv = "hello\n\ new\n\ world\n";

相关问题