ниже - это мой код, который пытается отделить строку «ключ = значение» от двух подмассивов «ключ» и «значение», и вот ошибки:«std» не указывает тип и ожидаемый инициализатор перед функцией
string2StringPair.cc:9:3: ошибка: 'std' не называет тип; string2StringPair.cc:10:3: ошибка: 'std' не называет тип; string2StringPair.cc:13:12: ошибка: ожидается инициализатор до того «string2StringPair»
#ifndef __PARSE_H_
#define __PARSE_H_
#include "cppstd.hh"
#include <string>
using namespace std;
struct StringPair{
std:string key;
std:string value;
}
StringPair string2StringPair (char* str[]){
std:string x, y;
x = ""; y = "";
for (int i=0;i<str.length();i++){
if str[i]=="="{
for (int j=0;j<i;j++){
x=x+str[j];
}
for (int k=(i+1);k<str.length();k++){
y=y+str[k];
}
break;
}
}
if ((x=="") && (y=="")){
cout<<"ERROR: There is no = in the input string!"<<endl;
}
StringPair tmp;
tmp.key = x;
tmp.value = y;
return tmp;
}
#endif
int main(int argc, char *argv[]){
StringPair pair;
pair.string2StringPair(argv[1]);
cout<<"The pair is "<<pair<<endl;
return 0;
}
был бы очень признателен, если вы могли бы мне помочь исправить ошибки.
Когда я изменил
std::string key;
std::string value;
Там больше не было ошибок "станд". Зачем??
Почему инициализатор ожидается перед строкой2StringPair? Я, хотя у меня уже был один: StringPair?
'std :: string', а не' std: string'. И я бы предложил не использовать 'using namespace std;' вообще. – lapk
Это не проблема, но имена, содержащие два последовательных символа подчеркивания ('__PARSE_H_') и имена, начинающиеся с символа подчеркивания, за которым следует заглавная буква, зарезервированы для реализации. Не используйте их. –
@PeteBecker На самом деле, ** ** является одной из проблем - любая программа, использующая те (вне реализации), имеет неопределенное поведение. –