你好我有这样的代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main () {
std::string s="fawwaz";
...
}
然后我用G ++编译它使用我从gcc.gnu.org下载的gnu gcc在线安装程序,编译运行没有任何错误和警告,但是当我运行时,出现错误“程序a.exe已经停止工作”。 并且程序运行没有任何错误。然后我尝试编译原始文件(没有字符串声明的双反斜杠)程序编译并成功运行。
解决方案是什么?哪里有问题?他们有没有办法解决我的问题,所以我可以通过命令行编译我的程序NOT通过Microsoft Visual C ++,因为通过命令行编译会更快? :d
谢谢
这是完整的代码:
#include <cstdio>
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
void Cetak_Puzzle_Start(){
}
int main(int argc, char const *argv[])
{
string s;
ifstream file("input.txt");
vector<vector<int> > Puzzle_Start;
vector<vector<int> > Puzzle_Finish;
int Puzzle_size=0;
/*
* RETRIEVE PUZZLE SIZE
**/
getline(file,s);
for (int i = 0; i < s.length(); ++i)
Puzzle_size= (Puzzle_size*10) + (int) (s[i]-'0');
/*
* Set Zero ukuran 3x3 vector Puzzle start dan Puzzle finish
**/
vector<int> vtemp(Puzzle_size,0);
for (int i = 0; i < Puzzle_size; ++i)
{
Puzzle_Start.push_back(vtemp);
Puzzle_Finish.push_back(vtemp);
}
/*
* RETRIEVE START STATE
**/
getline(file,s);
int m=0,n=0; // dummy var for looping only m:pointer baris, n:pointer kolom,
for (int i = 0; i < s.length(); ++i)
if (n<Puzzle_size){
if (s[i]=',')
n++;
else if (s[i] >= '0' && s[i] <='9')
Puzzle_Start[m][n]= (Puzzle_Start[m][n] * 10) +(int) (s[i]-'0');
else if (s[i] ='B')
Puzzle_Start[m][n]=-1;
}else{
n=0; // Ganti baris
m++;
}
fclose(stdin);
/*
* CETAK PUZZLE
**/
// for (int i = 0; i < Puzzle_Start.size(); ++i){
// for (int j = 0; j < Puzzle_Start[i].size(); ++j)
// printf("%d ",Puzzle_Start[i][j]);
// printf("\n");
// }
return 0;
}
答案 0 :(得分:0)
这是错误,
if (s[i]=',')
应该是
if (s[i]==',')
和
else if (s[i]='B')
应该是
else if (s[i]=='B')
混淆=
(赋值)和==
(相等)是一个非常常见的错误