【问题标题】:vector<string> in wxComboBoxwxComboBox 中的矢量<字符串>
【发布时间】:2014-05-30 07:06:40
【问题描述】:

我希望我的问题不是本地化的......但我认为其他人会偶然发现这个或类似的问题。

我想在我的系统上创建一个包含所有可用端口的向量(这适用于控制台应用程序)。之后,我想将向量元素复制到 wxString-Array 中以将它们放入 wxComboBox。

所以,在我的特殊情况下,我得到了两个错误:

  1. 向量的变量名在 wxWidgets 中是未知的
  2. 通过复制,wxString 会将我的字符串转换为 wchar_t(我知道,wchar_t 和 wxString 很相似...)

我将添加一些我的代码,以便您更好地了解问题:

第一个问题

std::vector<std::string> v_ports;
v_ports.push_back = "Com1";
v_ports.push_back = "Com4";

--> 错误:'v_ports' 没有命名类型 (提示:这是一个例子,在hole programm中我将使用一个函数来获取字符串)

第二个问题

wxString sect_opt[v_ports.size()];

for(int i = 0; i < v_ports.size(); i++)
    sect_opt[i] = _T(v_ports[i]);

--> 错误:'Lv_ports' 未在此范围内声明

我正在使用: IDE:CodeLite 5.1; wxW 2.9.4; @Win8.1

【问题讨论】:

  • 试试v_ports.push_back("Com1");
  • 我的上帝……我一定是少睡了……但这并不能解决问题
  • 现在你的第一个问题没有问题,请参阅:ideone.com/s5LRGx
  • @billz:是的,两个标题都包括在内
  • @Dequing:如果你在控制台应用程序中尝试过,你不会出错,我首先将我的函数创建为控制台应用程序,但是当我尝试使用 wxW 函数时错误引发。

标签: c++ wxwidgets


【解决方案1】:

第一个问题

而不是使用:

v_ports.push_back = "Com1";
v_ports.push_back = "Com4";

你应该使用:

v_ports.push_back("Com1");
v_ports.push_back("Com4");

因为std::vector&lt;T&gt;::push_back 是一个函数。

第二个问题

_Tis supposed to 可用于文字

使用 _T 宏有条件地将文字字符串编码为可移植到 Unicode。

不能用在_T(v_ports[i])这样的表达式中。

要将字符串转换为 unicode,请参见:

【讨论】:

  • 投反对票的原因?如果有问题,我很乐意改进我的答案。
  • std::string 可以直接转换为wxString(在过程中隐式进行Unicode转换),即如果字符串是ASCII(或在当前语言环境中编码),只需编写wxString(v_ports[i])就足够了编码)。否则wxString::FromUTF8() 可能会有用。
  • @VZ。感谢您的补充。
  • 嗨,谢谢,但是我如何写信给德清,错误仍然存​​在,即使我使用 push_back 作为函数。 (这里忘记更新了,今天早上用上面的 push_back 肯定累死了……)但是第二个问题现在已经解决了,谢谢。
  • @Casisto 请不要用解决方案更新您的问题。保持原状。解决方案留在答案中。
猜你喜欢
  • 2012-05-16
  • 2013-09-08
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 2014-08-18
  • 1970-01-01
  • 2017-05-23
  • 2014-07-06
相关资源
最近更新 更多