【问题标题】:C++ convert vector<std::string> to char*C++ 将向量<std::string> 转换为 char*
【发布时间】:2021-01-09 17:39:00
【问题描述】:

你好,正如标题所示,我想转换一个向量,

 std::vector<std::string>

转换成 c 风格的字符串,比如

char* buffer.

我想让vector变成c风格的字符串的原因是因为我目前正在使用WinApi,并且我特别想使用

SetWindowTextA()

不带向量。 是的,我必须先将数据读入一个字符串向量,所以我无法在那里改变任何东西。因此,如果您能帮助我或为我指明正确的方向,我会非常高兴????

编辑: 进一步说明: 是的,我会将几个字符串加载到向量中。我只是希望所有这些字符串组合成一个字符串。

您好, ye546

【问题讨论】:

  • 你能举个例子,字符串应该如何组合成一个?
  • char* 是单个字符串,但您有多个字符串。你想在它们之间插入\n
  • Google 如何将字符串向量连接到单个字符串应该很容易。然后只需调用 .data()。
  • std::stringstream ss; auto sep = ""; for (auto&amp;&amp; s : v) { ss &lt;&lt; sep &lt;&lt; s; sep = " "; } SetWindowTextA(hwnd, ss.str().c_str());
  • 字符串应该如何组合?

标签: c++ winapi


【解决方案1】:

所以只需将向量字符串组合成一个字符串,然后调用 c_str() 转换为 char*。

std::vector<std::string> vec;
...
std::string combined;
for (const auto& s : vec)
    combined += s;
WinAPI(combined.c_str());

【讨论】:

  • std::string::c_str 返回const char *。请改用&amp;combined[0]
  • SetWindowTextA 采用char const*,因此使用c_str() 非常好。
猜你喜欢
  • 1970-01-01
  • 2010-11-14
  • 2016-12-28
  • 1970-01-01
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多