在Parse.h中
#ifndef PARSE_H_
#define PARSE_H_
#include <string>
#include <iostream>
class Parse
{
std::string s;
public:
Parse(std::string s_) :s{ s_ } {};
int getFirst();
int getLast();
};
#endif
在Parse.cpp中
#include "Parse.h"
int Parse::getFirst()
{
int m1 = 0;
int m2 = 0;
for (int i = 0; i <= s.size() - 1; i++)
{
if (s[i] >= '0' && s[i] <= '9')
{
m1 = i;
break;
}
}
m2 = m1;
while (s[m2] >= '0' && s[m2] <= '9')
{
m2++;
}
std::string s1 = s.substr(m1, m2-m1);
int n = std::stol(s1);
return n;
}
int Parse::getLast()
{
int m3 = 0;
int m4 = 0;
for (size_t i = s.size() - 1; i > 0; i--)
{
if (s[i] >= '0' && s[i] <= '9')
{
m3 = i;
break;
}
}
m4 = m3;
while (s[m4] >= '0' && s[m4] <= '9')
{
m4--;
}
std::string s4 = s.substr(m4, m3);
int n = std::stol(s4);
return n;
}
在main.cpp中
#include "Parse.h"
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string s{};
cin >> s;
Parse p{ s };
int c = p.getFirst();
int d = p.getLast();
cout << c << endl;
cout << d << endl;
return 0;
}
在vscode中編譯運行的時候出現 C:\Users\zs\AppData\Local\Temp\ccwaNqWu.o:main.cpp:(.text+0x115): undefined reference to `Parse::getFirst()'
C:\Users\zs\AppData\Local\Temp\ccwaNqWu.o:main.cpp:(.text+0x124): undefined reference to `Parse::getLast()'
collect2.exe: error: ld returned 1 exit status 這樣的錯誤,
在vs中編譯運行的時候出現abort() has been called 請問我這里哪里錯了啊
uj5u.com熱心網友回復:
vs除錯一下,應該是string s出錯了,不要加{}uj5u.com熱心網友回復:
沒有編譯連接parse.cppuj5u.com熱心網友回復:
好像不是這兒的錯uj5u.com熱心網友回復:
那怎么做。是在main.cpp里面加一個#include “Parse.cpp”嘛uj5u.com熱心網友回復:
我實驗了 能編譯通過。 應該是沒有編譯連接parse.cpp 。你可以刪了parse.cpp重新建一個試試。uj5u.com熱心網友回復:
我全部都刪了再建的好像還是不行。不知道咋回事。哎uj5u.com熱心網友回復:
沒有編輯鏈接Parse.cpp,在你的task.json檔案中添加"${fileDirname}\\Parse.cpp", //類似添加需要的檔案,可進行多檔案編譯,也可使用makefile如圖

可以編譯成功。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/55000.html
標籤:C++ 語言
上一篇:有什么問題?
下一篇:A*演算法的一些問題。
