在将字符串放入字符串向量时遇到问题?
Having problems putting strings in a vector of strings?
晚安, 我有两个字符串作为参数(campo e valor(,我想将它们放在两个单独的向量中,但给了我奇怪的错误,我找不到为什么,我是C++新手,所以这可能是一个新手错误。
我的班级:
/* Includes */
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class Geral {
private:
vector<string> v_campo;
vector<string> v_valor;
public:
Geral();
~Geral();
void TomaCampoValor(string campo, string valor);
void Mostrar();
string GetValorCampo(string campo);
bool ExisteCampo(string campo);
};
这是我的 cpp:
void Geral::TomaCampoValor(string _campo, string _valor) {
int i = 0;
// Searching if there is already the same _campo
for (i = 0; i < v_campo.size(); i++) {
if (v_campo[i].c_str() == _campo) {
v_valor[i].push_back(*_valor.c_str());`
return;
}
}
// If doesn't find it
v_campo[i].push_back(*_campo.c_str());
v_valor[i].push_back(*_valor.c_str());
}
这是给我的错误 给我的错误:
提前谢谢,如果我没有把自己说清楚,请问。
很惊讶这甚至编译
你是说
v_campo.push_back(_campo);
v_valor.push_back(_valor);
编辑:
这也是错误的
(v_campo[i].c_str() == _campo)
你是说
(v_campo[i] == _campo)
确保您不要忽略编译器警告,它们可以帮助您
由于_valor
是std::string
类型,因此无需从c_str()
方法创建std::string
。
试试这个:
v_campo.push_back(_campo);
v_valor.push_back(_valor);
另一个问题是v_campo[i]
是std::string
类型,std::string
没有字符串的push_back
方法。
因此,根据您对问题的方法和进一步的问题,我想您需要为营地及其某种功能创建某种数据库,您希望与各自的营地链接。
您可以从以下方法开始:
-
寻找更优化的数据结构来保存您的数据,因为您希望获得类似以下内容 { "Camp1" : feature_array1, "Camp2" : feature_array2 } (一些提示:键值对和非常快速的插入和查找项目(
-
尝试在非 POD 类型上调用构造函数,它可以防止一些错误或可以帮助您编译程序。
-
查看常量引用参数,这可能会有所帮助。
-
std::string
不等于 C 样式的 char* 字符串,因为它最终没有 \0,所以你的相等性测试是无用的。 -
查看
using namespace std
的利弊
相关文章:
- 编译包含字符串的代码时遇到问题
- 在将字符串放入字符串向量时遇到问题?
- 我遇到了这个代码片段,不明白. 它递归检查 C++ 字符串中是否存在大写字符
- Winsock2:当我尝试发送带有空格的字符串时,该函数在遇到空格时似乎停止发送
- 我不明白尝试使用字符串作为函数参数时遇到的错误
- 交换两个字符串时访问正确的内存时,我遇到了分段错误
- 我在将字符串拆分为向量时遇到困难
- 我在 c++ 中声明字符串类型时遇到问题
- 打印较大的字符串时遇到问题 C++
- 我在内存泄漏和字符串方面遇到了一个非常奇怪的问题
- 打印我的字符串阵列时,会遇到细分错误
- 为什么我会在试图计算字符串字母的程序中遇到此错误
- 我在使用 cin.getline() 从用户那里获取 3 个字符串并使用指针数组来存储它们时遇到问题
- C++字符串表达式求解器遇到访问冲突
- 编译器在遇到提取或插入运算符时处理信息(字符串、操纵器等)的顺序是什么?
- 是否可以创建一个字符串数组,如果是的话,为什么我会遇到此错误:错误:预期表达式
- 为什么我会遇到细分错误?将输出作为数字而不是字符串的原因是什么?
- 为什么此代码在遇到换行符之前无法正确读取字符串?
- 从一个字符串中获取 2-5 个连续的单词短语,我得到了 2 个工作,但在做 3 个时遇到麻烦
- 遇到字符串::查找的问题