如何使用子字符串查找数字行的正确部分
How do I use substring to find the correct part of line of numbers?
处理一个赋值,我需要实现子字符串的知识,但我遇到了编译错误。
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string>
#include <string.h>
using namespace std;
int main() {
string K;
cout << "Sisestage isikukood:n ";
getline(cin, K);
/* Küsin kasutajalt isikukoodi*/
std::string str2 = K.substr(1, 1);
std::string str3 = K.substr(2, 2);
std::string str4 = K.substr(4, 2);
std::string str5 = K.substr(6, 2);
cout << "Isikukoodi I andmed:n ";
if(std::string str2 == "1") {
cout << " *meesn";
} else if(std::string str2 == "2") {
cout << " *nainen";
} else if(std::string str2 == "3") {
cout << " *meesn";
} else if(std::string str2 == "4") {
cout << " *nainen";
} else if(std::string str2 == "5") {
cout << " *meesn";
} else if(std::string str2 == "6") {
cout << " *nainen";
}
std::cout << "* sundis " << str3 << "." << str4 << ".";
else if(std::string str2 == "2" || std::string str2 == "1") {
cout << "18" << str5 << ;
} else if(std::string str2 == "3" || std::string str2 == "4") {
cout << "19" << str5 << ;
} else if(std::string str2 == "5" || std::string str2 == "6") {
cout << "20" << str5 << ;
}
} else { /*Tulemus,kui isikukuud on sisestatud valesti*/
cout << " Sisestasite isikukoodi " << K << " nime valesti.Palun proovige uuesti.n";
}
getch();
return 0;
}
C:programscUntitled1.cpp: In function `int main()':
C:programscUntitled1.cpp:19: error: expected primary-expression before "str2"
C:programscUntitled1.cpp:19: error: expected `)' before "str2"
C:programscUntitled1.cpp:24: error: expected primary-expression before "str2"
C:programscUntitled1.cpp:24: error: expected `)' before "str2"
C:programscUntitled1.cpp:28: error: expected primary-expression before "str2"
C:programscUntitled1.cpp:28: error: expected `)' before "str2"
C:programscUntitled1.cpp:32: error: expected primary-expression before "str2"
C:programscUntitled1.cpp:32: error: expected `)' before "str2"
C:programscUntitled1.cpp:36: error: expected primary-expression before "str2"
C:programscUntitled1.cpp:36: error: expected `)' before "str2"
C:programscUntitled1.cpp:40: error: expected primary-expression before "str2"
C:programscUntitled1.cpp:40: error: expected `)' before "str2"
C:programscUntitled1.cpp:45: error: expected primary-expression before "else"
C:programscUntitled1.cpp:45: error: expected `;' before "else"
C:programscUntitled1.cpp:49: error: expected primary-expression before "else"
C:programscUntitled1.cpp:49: error: expected `;' before "else"
C:programscUntitled1.cpp:53: error: expected primary-expression before "else"
C:programscUntitled1.cpp:53: error: expected `;' before "else"
C:programscUntitled1.cpp: At global scope:
C:programscUntitled1.cpp:59: error: expected unqualified-id before "else"
C:programscUntitled1.cpp:59: error: expected `,' or `;' before "else"
C:programscUntitled1.cpp:62: error: expected constructor, destructor, or type conversion before ';' token
C:programscUntitled1.cpp:63: error: expected unqualified-id before "return"
C:programscUntitled1.cpp:63: error: expected `,' or `;' before "return"
C:programscUntitled1.cpp:64: error: expected declaration before '}' token
Execution terminated
几个问题:
- 您过早终止了main(),多余的大括号就在
else
语句之前。 - 当语法不正确时,您继续使用
std::string str# == something
。尝试str# == something
,因为它们无论如何都是std::string
的。
不幸的是,在外部括号之上,这段代码充满了错误。
要修复您的代码,您需要从条件中的"std::string str2 == "1"中删除"std::string"。您正在重新初始化您的值,这会导致编译器出现问题。
其次考虑一个 case 语句,因为编译器期望在 else 之后的下一个条件,如果是这样的话
std::cout <<"* sundis" <<str3 <<"." <<str4 <<".";
也会导致编译问题。
我发现的另一个问题是你悬空的"<<"所以改变 cout << "18" << str5 << ;
自 cout << "18" << str5 << endl;
最后,你没有定义
希望这有帮助
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 检查输入是否不是整数或数字
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- 如何用数字处理log(0)
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- 查找最接近的大于当前数字的数字的索引
- 找到两对数字,使它们的乘积的绝对差最小化
- 我想做一个彼此不同但重复出现的数字
- 将数字转换为字母(例如:123 转换为一二三)
- C++如何计算用户输入的数字中的偶数位数
- 如何在C++中确定文本文件中的元素是字符还是数字
- 打印数字图案
- C++问题:用户认为数字1-100,程序提出问题不超过6次即可得到答案。无法正确
- 如何检查一个c++字符串中有多少相同的字符/数字
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 将数字打印成文字
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 丢弃部分行并保存任意长的数字