您可以将原始字符串修饰符 R"()" 与字符串变量结合使用吗?
Can you combine the raw string modifier R"()" with a string variable?
例子
例如:
string MyString = "Normal\tString";
cout << MyString << endl;
生成以下内容:"Normal String"
将 原始字符串修饰符 附加到字符串,如下所示:
string MyString = R"(Normal\tString)";
cout << MyString << endl;
生成以下内容:"Normal\tString"
问题
有没有办法将 原始字符串修饰符 附加到包含字符串的变量,以便打印变量中包含的字符串的原始形式?
string TestString = "Test\tString";
cout << R(TestString) << endl;
所以你得到:"Test\tString"
Is there a way to append the raw string modifier to a variable containing a string in order to print the raw form of the string contained within the variable?
没有
但是,您可以编写一个函数,将转义序列定义的字符替换为适当的字符串,即将字符 '\t'
替换为字符串 "\t"
.
示例程序:
#include <iostream>
#include <string>
// Performs only one substitution of \t.
// Needs to be updated to do it for all occurrences of \t and
// all other escape sequences that can be found in raw strings.
std::string toRawString(std::string const& in)
{
std::string ret = in;
auto p = ret.find('\t');
if ( p != ret.npos )
{
ret.replace(p, 1, "\t");
}
return ret;
}
int main()
{
std::string TestString = "Test\tString";
std::cout << toRawString(TestString) << std::endl;
}
输出:
Test\tString
有点。这可行,但不是一个很好的解决方案:
std::string strToInsert = " insert this "
std::string myRawString = R"(
raw string raw string raw string
raw string raw string raw string
)"; myRawString += strToInsert; myRawString += R"(raw string
raw string raw string raw string
)";
这个问题被标记为 C++11,在这种情况下,滚动你自己的转换函数可能是最好的选择。
但是,如果您有 C++14 编译器,则可以使用 std::quoted
流操纵器:
#include <iostream>
#include <iomanip>
int main() {
string s = "Hello\tWorld!";
std::cout << std::quoted(s) << std::endl; // Prints "Hello\tWorld!"
}
例子
例如:
string MyString = "Normal\tString";
cout << MyString << endl;
生成以下内容:"Normal String"
将 原始字符串修饰符 附加到字符串,如下所示:
string MyString = R"(Normal\tString)";
cout << MyString << endl;
生成以下内容:"Normal\tString"
问题
有没有办法将 原始字符串修饰符 附加到包含字符串的变量,以便打印变量中包含的字符串的原始形式?
string TestString = "Test\tString";
cout << R(TestString) << endl;
所以你得到:"Test\tString"
Is there a way to append the raw string modifier to a variable containing a string in order to print the raw form of the string contained within the variable?
没有
但是,您可以编写一个函数,将转义序列定义的字符替换为适当的字符串,即将字符 '\t'
替换为字符串 "\t"
.
示例程序:
#include <iostream>
#include <string>
// Performs only one substitution of \t.
// Needs to be updated to do it for all occurrences of \t and
// all other escape sequences that can be found in raw strings.
std::string toRawString(std::string const& in)
{
std::string ret = in;
auto p = ret.find('\t');
if ( p != ret.npos )
{
ret.replace(p, 1, "\t");
}
return ret;
}
int main()
{
std::string TestString = "Test\tString";
std::cout << toRawString(TestString) << std::endl;
}
输出:
Test\tString
有点。这可行,但不是一个很好的解决方案:
std::string strToInsert = " insert this "
std::string myRawString = R"(
raw string raw string raw string
raw string raw string raw string
)"; myRawString += strToInsert; myRawString += R"(raw string
raw string raw string raw string
)";
这个问题被标记为 C++11,在这种情况下,滚动你自己的转换函数可能是最好的选择。
但是,如果您有 C++14 编译器,则可以使用 std::quoted
流操纵器:
#include <iostream>
#include <iomanip>
int main() {
string s = "Hello\tWorld!";
std::cout << std::quoted(s) << std::endl; // Prints "Hello\tWorld!"
}