Jac*_*row 40 c++ string variables std
我正在尝试做一些非常简单的事情,然而,经过一个小时的搜索,我找不到合适的答案,所以我必须错过一些相当明显的东西.
我正在尝试动态创建用于ifstream的文件名.虽然我理解可以使用各种方法,但我已经决定创建一个std :: string,并使用stringname.c_str来转换为const.
但问题是我需要使用混合变量和预定义文本值来创建字符串.我收到编译器错误,所以这必须是语法问题.
伪
std::string var = "sometext" + somevar + "sometext" + somevar;
Run Code Online (Sandbox Code Playgroud)
谢谢!
mgi*_*ida 55
你考虑过使用stringstreams吗?
#include <string>
#include <sstream>
std::ostringstream oss;
oss << "sometext" << somevar << "sometext" << somevar;
std::string var = oss.str();
Run Code Online (Sandbox Code Playgroud)
Dav*_*rtz 23
std::string var = "sometext" + somevar + "sometext" + somevar;
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为添加是从左到右执行的"sometext"
(第一个)只是一个const char *
.它没有operator+
打电话.最简单的解决方法是:
std::string var = std::string("sometext") + somevar + "sometext" + somevar;
Run Code Online (Sandbox Code Playgroud)
现在,左到右+
操作列表中的第一个参数是a std::string
,它有一个operator+(const char *)
.该运算符生成一个字符串,使链的其余部分工作.
您还可以启用所有操作var
,这是一个std::string
所有必需的操作符:
var = "sometext";
var += somevar;
var += "sometext";
var += somevar;
Run Code Online (Sandbox Code Playgroud)
Dav*_*nck 20
在C++ 11中,您可以使用std :: to_string:
std::string var = "sometext" + std::to_string(somevar) + "sometext" + std::to_string(somevar);
Run Code Online (Sandbox Code Playgroud)
您还可以使用 sprintf:
char str[1024];
sprintf(str, "somtext %s sometext %s", somevar, somevar);
Run Code Online (Sandbox Code Playgroud)
处理 c++20 的新方法是使用format。
#include <format>
auto var = std::format("sometext {} sometext {}", somevar, somevar);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
117562 次 |
最近记录: |