生活随笔
收集整理的這篇文章主要介紹了
C++ ifstream 从文件中 字符串和数字混合输入
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
讀入數據類似字符串+數字+字符串+數字這樣循環穿插混合的類型
比如下面的代碼,main函數里有個while循環,無限刷菜單然后用戶輸入選項的那種,一開始使用freopen會導致緩沖區無限有數據,即無法繼續輸入選項了就
采用ifstream來解決,注釋掉的是之前的會出問題的freopen版本的代碼
#include<bits/stdc++.h>
#define N 50
#define M 50
#define W 50
#define Pi acos(-1.0)
#define clr(a) memset(a,0,sizeof a)
#define space(a) for(int i=0;i<a;i++)printf(" ");
using namespace std;int m_num,w_num,s_num;//struct m_item{char name[N];int no[N];int score[N];
}m_item[M];struct w_item{char name[N];int no[N];int score[N];
}w_item[M];
int sc[5]={7,5,3,2,1};int mod1(){ifstream fin1("item.txt");//freopen("item.txt","r",stdin);while(fin1>>s_num>>m_num>>w_num){cout<<s_num<<m_num<<w_num<<"\n";// scanf("%d %d %d",&s_num,&m_num,&w_num);// getchar();for(int i=0;i<m_num;i++){//gets(m_item[i].name);fin1>>m_item[i].name;//scanf("%s",m_item[i].name);cout<<m_item[i].name<<"\n";//printf("%s",m_item[i].name);for(int j=0;j<s_num;j++){fin1>>m_item[i].no[j];//scanf("%d",&m_item[i].no[j]);cout<<m_item[i].no[j]<<"\n";//printf("%d",m_item[i].no[j]);m_item[i].score[j]=sc[j];}}}for(int i=0;i<w_num;i++){//gets(w_item[i].name);fin1>>w_item[i].name;//scanf("%s",w_item[i].name);cout<<w_item[i].name<<"\n";//printf("%s",w_item[i].name);for(int j=0;j<s_num;j++){fin1>>w_item[i].no[j];//scanf("%d",&w_item[i].no[j]);cout<<w_item[i].no[j]<<"\n";//printf("%d",w_item[i].no[j]);w_item[i].score[j]=sc[j];}//getchar();}fin1.close();return 0;
}int main(){int option; // 系統功能菜單選項int cnt1=0;while(true){
// 輸出系統功能提示菜單cout<<option<<"\n";cin>>option;switch(option){case 1:mod1();break;
// 添加相應代碼case 0:exit(0);default:cout<<"輸入選項不正確!請重新輸入!"<<endl;}}return 0;
}
總結
以上是生活随笔為你收集整理的C++ ifstream 从文件中 字符串和数字混合输入的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。