c++ io 库将文件内容读入到vector对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ io 库将文件内容读入到vector对象相关的知识,希望对你有一定的参考价值。
题目要求是这样的!将文件内容读入string类型的vector容器,每一行存储为该容器对象的一个元素。
#include<iostream>
#include<string>
#include<vector>
#include<fstream>
int filetovector(string filename,vector<string> &string_text)
//创建fstream对象绑定到由形参filename指定的文件中去
fstream input(filename.c-str());
if(!input) //打开文件失败
return 1;
string s;
while(getline(input,s)
string_text.push_back(s);
input.close(); //关闭文件
if(input.eof())
return 4;
if(input.bad())
return 3;
if(input.fail())
input 2;
using namespace std;
int main()
vector<string> string_text;
string filename,s;
cout<<"Enter file name(ctrl+z to end): "<<endl;
cin>>filename;
//处理文件
switch(filetovector(filename,string_text)
case 1:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 2:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 3:
cout<<"error:can not open file: \t"<<endl;
return -1;
vector<string>::iterator iter=string_text.begin();
while(iter!=string_text.end())
cout<<*iter<<endl;
++iter;
return 0;
程序是这样的,定义一个容器对象,再声明用于输入的文件名和输入内容为strig类型,提示用户输入同文件夹下的文件名,输入,调用函数,将实参传递给形参进行处理,创建一个fstring 流对象input绑定至文件名,当打开文件失败,结束,当成功打开,将流对象里面的内容存储至字面符类型对象s,再将s复制到容器里面,当文件遇到结束符,系统故障,输入错误就返回float至实参。这里什么意思啊,case 1: ??文件里面有1 2 3就为假。如果 我说错了请纠正,一定要细节分析到位,
在线等。
将每一行存储为该容器对象的一个元素,以及将每个单词存储为容器的一个元素:
while(input>>s)
while(getline(ipnut,s)为什么我写在程序里面没差别?
我输入一个文件名text.cpp,里面的元素是1stringshif 2kdsh sd3kjfh kd4shf kds
输出的是一行1stringshif 2kdsh sd3kjfh kd4shf kds,求速回答
getline默认的结束符为'\n'此时容器中只有一个对象;while循环内只执行一次;
楼主可以用size();成员函数看看结果 参考技术A #include<iostream>
#include<string>
#include<vector>
#include<fstream>
#include<stdio.h>
using namespace std;
int filetovector(string filename,vector<string> &string_text)
//创建fstream对象绑定到由形参filename指定的文件中去
fstream input(filename.c_str());
if(!input) //打开文件失败
return 1;
char s[500];
while(input.getline(s,500))
string_text.push_back(s);
input.close(); //关闭文件
if(input.eof())
return 4;
if(input.bad())
return 3;
if(input.fail())
return 2;
int main()
vector<string> string_text;
string filename;
string s;
cout<<"Enter file name(ctrl+z to end): "<<endl;
cin >> filename;
switch(filetovector(filename,string_text))
case 1:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 2:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 3:
cout<<"error:can not open file: \t"<<endl;
return -1;
vector<string>::iterator iter=string_text.begin();
while(iter!=string_text.end())
cout<<*iter<<endl;
++iter;
return 0;
IOS:如何使用 Google Drive sdk 库将文件上传到特定的 Google Drive 文件夹
【中文标题】IOS:如何使用 Google Drive sdk 库将文件上传到特定的 Google Drive 文件夹【英文标题】:IOS: How to upload a file to specific Google drive folder using Google drive sdk library 【发布时间】:2012-11-18 10:51:39 【问题描述】:我将 Google drive sdk 与我的 iOS 应用程序集成在一起。但我不知道如何将文件上传到 Google 驱动器特定文件夹。
这里是用于上传文件的代码。但是这个将文件上传到我的谷歌驱动器根文件夹。任何人共享代码以将文件上传到谷歌驱动器特定文件夹?
我的代码:
-(void)uploadFileToGoogleDrive:(NSString*)fileName
GTLDriveFile *driveFile = [[[GTLDriveFile alloc]init] autorelease];
driveFile.mimeType = @"application/pdf";
driveFile.originalFilename = @"test.doc";
driveFile.title = @"test.doc";
NSString *filePath = [LocalFilesDetails getUserDocumentFullPathForFileName:fileName isSignedDocument:YES];
GTLUploadParameters *uploadParameters = [GTLUploadParameters
uploadParametersWithData:[NSData dataWithContentsOfFile:filePath]
MIMEType:@"application/pdf"];
GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:driveFile
uploadParameters:uploadParameters];
[self.driveService executeQuery:query
completionHandler:^(GTLServiceTicket *ticket,
GTLDriveFile *updatedFile,
NSError *error)
if (error == nil)
NSLog(@"\n\nfile uploaded into google drive\\<my_folder> foler");
else
NSLog(@"\n\nfile uplod failed google drive\\<my_folder> foler");
];
【问题讨论】:
NSString *filePath = [LocalFilesDetails getUserDocumentFullPathForFileName:fileName isSignedDocument:YES];如何添加localfilesdetails @GamiNilesh 忘记了 LocalFilesDetails,只需在 filePath 变量中传递您的文件数据存储路径即可。没关系 【参考方案1】:您需要设置driveFile
引用的parents
属性。
GTLDriveParentReference *parentRef = [GTLDriveParentReference object];
parentRef.identifier = folderIdentifier; // identifier property of the folder
driveFile.parents = @[ parentRef ];
【讨论】:
我怎么知道文件夹标识符? @ValeriyVan 你从文件夹中得到它。大概您会在之前的查询中为您提供文件夹列表。 @rmaddy,我在哪里可以读到这个? Google 关于 Google Drive API 的文档并没有就“如果我知道文件夹名称如何将文件保存在特定文件夹中”这样简单的问题给出简单直接的答案。【参考方案2】:我不了解 iOS,所以可能不太准确,但是 https://developers.google.com/drive/v2/reference/files/insert 中的这段代码有帮助吗
+ (void)insertFileWithService:(GTLServiceDrive *)service
title:(NSString *)title
description:(NSString *)description
parentId:(NSString *)parentId
mimeType:(NSString *)mimeType
data:(NSData *)data
completionBlock:(void (^)(GTLDriveFile *, NSError *))completionBlock
GTLDriveFile *file = [GTLDriveFile object];
file.title = title;
file.descriptionProperty = description;
file.mimeType = mimeType;
GTLUploadParameters *uploadParameters =
[GTLUploadParameters uploadParametersWithData:data MIMEType:mimeType];
GTLQueryDrive *query =
[GTLQueryDrive queryForFilesInsertWithObject:file
uploadParameters:uploadParameters];
【讨论】:
我也查看了这段代码,但他们没有在该代码中使用“parentId”参数。还有其他想法吗? 我在哪里可以得到我需要的文件夹的parentId
?【参考方案3】:
GTLServiceTicket *_editFileListTicket;
GTLServiceDrive *service = self.driveService;
GTLDriveFile *folderObj = [GTLDriveFile object];
folderObj.title = [NSString stringWithFormat:@"%@", title];
folderObj.mimeType = @"application/vnd.google-apps.folder";
GTLQueryDrive *query = [GTLQueryDrive queryForFilesInsertWithObject:folderObj
uploadParameters:nil];
_editFileListTicket = [service executeQuery:query
completionHandler:^(GTLServiceTicket *ticket,
GTLDriveFile *folderItem,
NSError *error)
if (error == nil)
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:nil message:@"Created" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
else
NSLog(@"error");
];
【讨论】:
你不觉得这个[NSString stringWithFormat:@"%@", title];
很有趣吗?为什么不只是title
?以上是关于c++ io 库将文件内容读入到vector对象的主要内容,如果未能解决你的问题,请参考以下文章