我有一个函数,它接受一个字符串,我们称之为
void print(std::string myString)
{
std::cout << myString;
}
我想做一些类似的事情
char myChar;
myChar = '{';
print("Error, unexpected char: " + myChar + "n");
它不起作用。
我试过类似的东西
print(std::string("Error, unexpected char") + std::string(myChar) + std::string("n) )
但是std::string(myChar(变成了char表示的任何int,它被打印为int,而不是打印为字母数字表示!
函数应该声明为:
void print( const std::string &myString)
{
std::cout << myString;
}
并被称为:
print( std::string( "Error, unexpected char: " ) + myChar + "n");
至于你的评论:
作为后续行动,是否可以传递匿名函数是否将字符串作为参数返回到print((?类似于打印({return"你好世界";}
然后您可以按照演示程序中所示的方式进行操作:
#include <iostream>
#include <string>
void f( std::string h() )
{
std::cout << h() << 'n';
}
int main()
{
f( []()->std::string { return "Hello World!"; } );
return 0;
}
如果您使用C++14,您可以执行以下操作:
using namespace std::literals;
char myChar;
myChar = '{';
print("Error, unexpected char: "s + myChar + "n"s);
您可以转换任意一个和concat。
您可以使用str.c_str()
将C++字符串转换为C字符数组。
或
使用std::string内置构造函数将C字符数组转换为C++字符串。