在向富文本框写入数据时获取字符代码而不是字母text属性
C++: Getting character codes instead of letters when writing data to rich text box Text property
我是c++新手,正在Visual Studio中开发一个相对雄心勃勃的Win32应用程序。我遇到的问题是,在主窗口的文本字段显示一个数字,而不是一个字母,当"写"从字符串。
我正在将矢量读取到富文本框中,但文本框显示的不是AA,而是6565。我知道65是"A"的字符代码,但还没能找到如何让窗口显示字母。
这是创建vector的代码。调试此片段表明数据可以正确加载。这段代码是'portfolio'类的一部分。
vector<string> tickers;
string cell;
string line;
ifstream d ("file.csv"); //The file contents look like: AA,AAPL,BAC and so on
if (d.is_open()) {
getline(d,line);
stringstream line2(line);
for (ci=0; ci<c; ci++) { //c is known and is the number of 'columns' in the file I am reading.
getline(line2,cell,',');
tickers.push_back(cell);
}
}
富文本框的名称为"Results2"。设置富文本框的Text属性的代码是:
portfolio p;
int n = p.tickers.size();
for (int i=0; i<n; i++) {
for (int j=0; j<p.tickers[i].size(); j++) {
Results2->Text += p.tickers[i][j];
}
Results2->Text += "n";
}
我知道"Results2->Text"位是正确的,因为数据在那里很好。问题是,我最后得到:
656565658076
代替:
AAapple
我做错了什么?
提前感谢您的帮助!
这可能是你正在操作的c++/STL字符串和RichTextBox正在使用的c++/CLI字符串之间的编组问题。
编辑
问题是你把字符一个接一个地放在RichTextBox::Text
,或者这个字段期望一个System::String
,所以它将每个字符转换为一个整数值到String
,然后把它放在文本框中,这就是为什么你得到ASCII数字而不是字符串。
由于portfolio::tickers
是您在评论中指定的vector<std::string>
,您可以在将每个std::string
转换为char*
之前将其提供给RichTextBox::Text
:
portfolio p;
for (int i=0; i<p.tickers.size(); i++) {
Results2->Text += gcnew String(p.tickers[i].c_str());
Results2->Text += "n";
}
您也可以使用VC2008中引入的marshal_as
:
Results2->Text += marshal_as<String^>(p.tickers[i].c_str());
相关文章:
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- C++我的数学有什么问题,为什么我的代码不能正确循环
- Qt Quick-如何仅从c++代码与qml属性交互
- GCC 编译器是否应该对涉及 [[fallthrough]] 属性的格式错误的C++代码进行诊断?
- 从C++代码中直接读取成员属性
- 在 c++ 代码中使用项目属性/宏
- 如何在不更改代码的情况下为所有C++函数设置属性
- GCC 生成代码或节具有读写和执行属性
- 无法使用类属性代码定义编译 c++
- 在运行时更改代码中属性的值
- 具有 c++ 代码的常量和弱属性
- gurobi - 错误代码 = 10004 无法检索属性'X'
- 在非托管C++代码中使用C#属性
- 通过代码添加具有可编辑属性的小部件
- 当从视觉工作室中的 IDL 文件生成 CPP 代码时,如何删除属性"in"的"const"?
- 用于查找标签/属性的正则表达式在HTML代码中
- 在向富文本框写入数据时获取字符代码而不是字母text属性
- 在c++中是否可以在代码体中声明一个属性?
- 在C代码中访问Android属性
- 使用if()根据属性修改类行为是否是代码味道