【发布时间】:2011-04-21 00:35:09
【问题描述】:
不要与如何拆分字符串解析相混淆,例如:
Split a string in C++?
我对如何在 c++ 中将字符串拆分为多行感到有些困惑。
这听起来像一个简单的问题,但举个例子:
#include <iostream>
#include <string>
main() {
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" +
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
//Gives error
std::string my_val ="Hello world, this is an overly long string to have" &
" on just one line";
std::cout << "My Val is : " << my_val << std::endl;
}
我意识到我可以使用std::string append() 方法,但我想知道是否有任何更短/更优雅(例如更像python,但显然三引号等在c ++中不受支持)的方式为了便于阅读,将 C++ 中的字符串分成多行。
当您将长字符串文字传递给函数(例如句子)时,这是特别需要的一个地方。
【问题讨论】:
-
这里有一个有趣的花絮:C++ 词法分析器实际上并不关心您在字符串前后放置了多少引号,只有两个例外。您使用的引号数量必须是奇数,并且它们必须在任一侧匹配。
""""" This is a valid string and will be parsed """""。但是,这些字符串没有特殊的属性,它们的行为就像单引号。 -
有趣的感谢分享...有什么有用的目的吗?您可能可以将其用作代码中不同字符串组的微妙标记,以供 perl/bash/python 脚本进行外部解析。这就是我现在能想到的。 :)
-
@ThomasAnthony 发生这种情况是因为它将结尾的引号视为一堆空字符串并将它们连接在一起 - 这不是一个功能,而是标准的 C/C++ 行为
标签: c++ string syntax coding-style readability