如何使用子字符串查找数字行的正确部分

How do I use substring to find the correct part of line of numbers?

本文关键字:确部 数字 何使用 字符串 查找      更新时间:2023-10-16

处理一个赋值,我需要实现子字符串的知识,但我遇到了编译错误。

#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;

最后,你没有定义

希望这有帮助