c++中如何提取文件每一行的一部分

图片说明
以下是我写的一段程序,可是编译时却出现了

error C2664: 'void __thiscall std::basic_ifstream >::open(const char *,int)' : cannot convert parameter 1 from 'class std::basic_string har,struct std::char_traits,class std::allocator >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
执行 cl.exe 时出错.

很苦恼,希望各路大神指教

我写的程序:
#include
#include
#include
#include
using namespace std;

int main()
{
vector vec_num;
string filename,line;
cout << "请输入要处理的图像路径:" << endl;
cin >> filename;
ifstream file;
file.open(filename);
if (!file.is_open())
{
cout << "有错误!文件未被打开\n";
}
while(getline(file, line))
{
float first_num,second_num;
int third_num;
sscanf(line.c_str(), "%f %f %d", &first_num, &second_num, &third_num);//格式化提取
cout << first_num << " " << second_num << " " << third_num << endl;//打印一下数据
//用vector把第一列的数据存下来
vec_num.push_back(first_num);
}

float avg_num = 0.0;//保存计算出来的平均数结果
//遍历vector
vector::iterator it;
for(it = vec_num.begin(); it != vec_num.end(); it++)
{
avg_num += *it;
}
avg_num = avg_num / vec_num.size();
cout << "第一列平均数是:" << avg_num << endl;
system("pause");
return 0;
}

8个回答

首先,filename,line应该定义为char类型;其次,vector使用需要制定类型;最后getline用法不对。
#include
#include
#include
using namespace std;
int main()
{
vector vec_num;
char filename[256],line[256];
cout << "请输入要处理的图像路径:" << endl;
cin >> filename;
ifstream file(filename);

if (!file.is_open())
{
    cout << "有错误!文件未被打开\n";
    return 0;
}

while (!file.eof())  
{  
    file.getline (line,256);  
    float first_num,second_num;
    int third_num;
    sscanf(line, "%f %f %d", &first_num, &second_num, &third_num);//格式化提取
    cout <<"first_num:"<< first_num << "second_num: " << second_num << "third_num: " << third_num << endl;//打印一下数据
    //用vector把第一列的数据存下来
    vec_num.push_back(first_num);
}  

float avg_num = 0.0;//保存计算出来的平均数结果
//遍历vector
vector<float>::iterator it;
for(it = vec_num.begin(); it != vec_num.end(); it++)
{
    avg_num += *it;
}
avg_num = avg_num / vec_num.size();
cout << "第一列平均数是:" << avg_num << endl;
system("pause");
return 0;

}

我认为加一个c语言会好一些,当然我是个菜鸟

我认为加一个c语言会好一些,当然我是个菜鸟

我认为加一个c语言会好一些,当然我是个菜鸟

提取的时候,那些数据是 未知的,scanf 是字符拼接的吧,是不是用的不对

最简单的解决办法是把 vs2010中的项目-》项目属性-》general-》把using unicode改成Use Multi-Byte Character Set。
稍微麻烦一点的办法是把string转换格式成char*

error C2664: 'void __thiscall std::basic_ifstream >::open(const char *,int)' : cannot convert parameter 1 from 'class std::basic_string har,struct std::char_traits,class std::allocator >' to 'const char *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

解决方案:ifstream file(filename); 改为 ifstream file(filename.c_str()); string类型不能默认转换为char*

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++中如何提取文件每一行的一部分
![图片说明](https://img-ask.csdn.net/upload/201602/24/1456279835_509665.png) 如上图所示的txt文件,我想用C++提取每一行的信息,例如第一行前两个浮点型,最后一个整型分别保存至变量中,最后可以实现,我对每一列的使用,比如求最后一列的平均值,保存的时候我希望保存成浮点型数据。应该怎么实现。 下面是我写的代码,但我的方法是计算每一行的字符个数,提取最后一位,但是面对不同类型的文件,应用性不强,最好能分成三列拆分(有可能有的文件小数位数不同)怎样修改呢,谢谢各位。 int main() { Cluster picture1; cout << "请输入要处理的图像路径:" << endl; cin >> filename; file.open(filename); if (!file.is_open()) { cout << "有错误!文件未被打开\n"; } for (int j = 0; j <100; j++) { for (int i = 0; i <100; i++) if (!file.eof()) { getline(file, line);//按行提取文件(以图像左下角开始,从左向右,从下到上遍历) int size = line.length(); char a = line[size - 1];//取出每行中第32个字符 picture1.set_tu(i, j, a);//把数字存储到数组中 } }
c#中怎样向代码文件的某部分插入几行代码??
就是先把文件(.cs文件)内容按行读出,在某一行下面插入几行代码,可以在读取的过程中插入吗??
用C++读取文件中特定行的某几列数据并输出到另一个文件
AR ZIMM 2014 06 30 00 00 0.000000 2 2.175456910513e-08 1.929140019560e-11 AR ZWE2 2014 06 30 00 00 0.000000 2 -6.930289135325e-03 2.317673679230e-11 AS G01 2014 06 30 00 00 0.000000 2 1.652894267903e-05 1.737915981300e-11 AS G02 2014 06 30 00 00 0.000000 2 5.039599514682e-04 2.999694851820e-11 AS G03 2014 06 30 00 00 0.000000 2 3.842715579222e-04 9.496021840410e-12 上面是一小部分需要读的文件,我想要输出到另外一个文件中的是所有AS G02开头的那一行的部分数据。例如AS G02 2014 06 30 5.039599514682e-04(化成浮点数)
c语言文件删除部分内容和修改指定内容
我想删除文件中的某一行。 网上介绍的办法大概是再建一个文件,把原文件不需删除的内容拷贝过去。 用fgets和fputs。 但fgets是一个一个字符读的… fscanf可以跳行读,该用什么函数录入呢?fprintf没用。。
C语言 用fgets()或fscanf()分别读取两个文件流出错
C Primer Plus第十三章第7题a:编写一个打开两个文件的程序,让程序打印第一个文件的第一行,第二个文件的第一行,第一个文件的第二行,第二个文件的第二行,以此类推,直到打印完行数较多的文件的最后一行。 我尝试在while循环中用两个fgets()分别读取两个文件的一行,然后用fputs()打印,结果出来一堆“烫”(乱码),文件的正确内容也参杂在其中。以下是部分程序代码和截图(两个文件中的内容分别是A(回车)C E; B D F) ``` while((fscanf(fp1, "%s", &first) == 1 && first[0] != '\0') || (fscanf(fp2, "%s", &second) == 1 && second[0] != '\0')) { puts(first); puts(second); } ``` ![错误结果](https://img-ask.csdn.net/upload/201511/12/1447296384_446382.png) 网上的答案中用的是getc逐字符读取,难道不能逐行或逐单词读取吗?
如何c语言打开二进制带状矩阵的.dat文件
我需要从.dat文件中读取矩阵,然后进行相关运算。现在小白一个,完全不知道怎么做。现将.dat的描述如下。 1.数据文件的文件名后缀为.dat,形式为:文件名.dat; 2.数据文件中的数据均为二进制记录结构,因此必须使用二进制方式进行读取; 3.数据文件的结构,分为以下四个部分: (1)文件标示部分,该部分用于存放数据文件的描述信息 结构如下(用C语言格式进行描述): typedef struct FileInfo { long int id; // 数据文件标示 long int ver; // 数据文件版本号 long int id1; // 备用标志 } FILEINFO; 其中: ①id:为该数据文件的标识,值为0xF1E1D1A0 即为:十六进制的F1E1D1A0 ②ver:为数据文件的版本号,值为16进制数据, 版本号 说明 0x101 系数矩阵为非压缩格式稀疏矩阵 0x102 系数矩阵为非压缩格式带状矩阵 0x201 系数矩阵为压缩格式稀疏矩阵 0x202 系数矩阵为压缩格式带状矩阵 ③id1:为备用标志字段,暂时未用; (2)矩阵描述部分:此部分中包括矩阵的阶数和上下带宽,如果是稀疏矩阵,则上下带宽值为0。 结构如下: typedef struct HeadInfo { long int n; // 方程组的阶数 long int q; // 带状矩阵上带宽 long int p; // 带状矩阵下带宽 } HEADINFO; (3) 系数矩阵数据部分:该部分存放方程组系数矩阵中的所有元素 ①如存贮格式为非压缩格式,则按行方式顺序存贮系数矩阵中的每一个 元素,元素总个数为n*n,每个元素的类型为float型; ②如果存贮格式是压缩方式,则同样是按行方式进行存贮,每行中只 放上下带宽内的非零元素,即每行中存贮的元素都为p+q+1个; (4)右端系数部分:该部分存放方程组中的右端系数 按顺序存贮右端系数的每个元素,个数为n个,每个系数的类型为float型 3.数据文件说明: (1)Dat61.dat 为非压缩带状方程组,阶数为15阶,该方程组供调试程序使用,该方程组的根都为1; (2)Dat62.dat 为压缩带状方程组,阶数为20阶,该方程组供调试程序使用,该方程组的根都为1; (2)Dat63.dat 为非压缩带状方程组,阶数在2000阶左右; (3)Dat64.dat 为压缩带状方程组,阶数在40000阶左右;
怎样使用c++读取txt文件中的所有字符并输出,并在控制台排版
在写一个小游戏时遇到点问题,虽然用额外代码完成了工作,但是觉得会有更正确的解决方法,恳请各位求教 问题分为两部分: 1、有一个txt文件,分成几个段落,文件中中有中文字符和英文字符,并且有多个连在一起的换行,怎么在txt文件中读取所有的字符并进行输出,重要的是,这些多个连续换行也要在控制台体现。 2、有一个txt文件,假设有103个汉字,怎么在控制台把txt文件中字符按整10个字节的字符分别输出。额外问题:如果是103字节中有汉字和英文字符的混合呢? 希望能得到简洁和直接的代码,在此先谢过
C#怎么给DataGrid中的行赋值
**如图,我想要给DataGrid添加行,为什么报错说找不到,没添加引用呢?该怎么解决** 我的代码 datagrid1是我DataGrid控件的name ![图片说明](https://img-ask.csdn.net/upload/201910/31/1572504341_461714.png) 报错 ![图片说明](https://img-ask.csdn.net/upload/201910/31/1572504480_766087.png) ## 在做一个选择文件夹输出文件夹中部分信息用列表显示的功能
有关string类字符串拆分的问题
![图片说明](https://img-ask.csdn.net/upload/201603/02/1456883243_833616.png) 这样的数据文件 我想用getline(file, line);//按行提取文件,然后把每一行拆分成五部分 分别用int a ,b,c,d,e保存 ; 例如第一行最后 a=0;b=640;c=75;d=75;e=75; 应该怎样实现呢 里面的string类可以转成int吗 String类的拆分一般都有什么函数呢 谢谢大家
请问使用命令行参数如何打开文件?
![图片说明](https://img-ask.csdn.net/upload/201904/10/1554891763_653181.png)![图片说明](https://img-ask.csdn.net/upload/201904/10/1554891770_277162.png) c primer plus 中讲了下命令行参数这块,可还是不太懂怎么利用命令行参数怎么打开一个文件,比如,我桌面上有一个名叫untitled的文件,我可以在product中选择edit product,然后选择argument,输入"untitled",程序就会跳到打不开文件这部分,输出can't open untitled 是需要把文件建立在同一个文件夹吗? 求解答,谢谢
C#中Parallel.For并行处理中读取文件时出现的错误
1、读取“d:/users/v-lingao/from_lei/wordsegmentation/testdata”目录下的所有txt文档,利用Parallel.For并行处理各个txt文档中的内容,每次读取一行存储到string line中,利用line = sr.ReadLine() (StreamReader sr); 没处理一行也入“d:/users/v-lingao/from_lei/wordsegmentation/testdata1”目录下新创建的对应的txt文件中。方法ComputeIDF()实现次功能。 2、读取在“d:/users/v-lingao/from_lei/wordsegmentation/testdata1”目录下创建的txt文件,利用Parallel.For并行处理每个txt文档中的内容,类似于ComputeIDF()方法,利用line = sr.ReadLine().。法ComputingTfIdf()实现此功能。错误也就出现在此方法中,错误提示根据写入文件时编码方式的不同有所改变。 部分代码如下所示: public static Dictionary<string, float> ComputeIDF(List<string> stopWordsList) { DirectoryInfo di = new DirectoryInfo(@"d:/users/v-lingao/from_lei/wordsegmentation/testdata"); FileInfo[] ff = di.GetFiles("*.txt"); Dictionary<string, int> featureDoc = new Dictionary<string, int>(); Parallel.For(0, ff.Length, (part) => { FileInfo file = ff[part]; Dictionary<string, int> featureFile = new Dictionary<string,int>(); string name = file.Name.Substring(file.Name.LastIndexOf("\\") + 1); string path = Path.Combine(@"d:/users/v-lingao/from_lei/wordsegmentation/testdata1", name); FileStream aFile = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(aFile, Encoding.UTF8); int lineCount = 0; char[] charArray = new char[] { ' ' }; StreamReader sr = new StreamReader(file.OpenRead(),Encoding.UTF8); string line = sr.ReadLine(); while (line != null) { ​ ​ ​ ​ ​ ​//部分代码省略 ​ ​ ​ ​ ​​lineCount++; sw.Write(lineCount); foreach (KeyValuePair<string, int> keyvalue in featureLine) { sw.Write(' ' + keyvalue.Key + ':' + (0.5 + 0.5 * ((float)keyvalue.Value / maxCount))); } sw.WriteLine(); line = sr.ReadLine(); } //combine the featureFiles into featureDoc without repeating featureDoc.Add(featurename, featureFile[featurename]); sr.Close(); sw.Close(); }); Dictionary<string, float> idf = new Dictionary<string, float>(); foreach (KeyValuePair<string, int> keyvalue in featureDoc) { idf.Add(keyvalue.Key, (float)Math.Log10((float)sumLine / (float)keyvalue.Value)); } return idf; } 这个方法没有问题。接下来是ComputingTfIdf(idf),问题出在这个方法中。 public static void ComputingTfIdf(Dictionary<string, float> idf) { DirectoryInfo dir = new DirectoryInfo(@"d:/users/v-lingao/from_lei/wordsegmentation/testdata1"); FileInfo[] ff = dir.GetFiles("*.txt"); StreamReader sr; Parallel.For(0, ff.Length, (part) => { FileInfo file = ff[part]; List<string> idfList = new List<string>(); idfList.AddRange(idf.Keys); int linenum = 0; sr = new StreamReader(file.OpenRead(),Encoding.UTF8); char[] charArray = new char[] { ' ' }; char[] charArray1 = new char[] { ':' }; string name = file.Name.Substring(file.Name.LastIndexOf("\\") + 1); string path = Path.Combine(@"d:/users/v-lingao/from_lei/wordsegmentation/idfdata", name); FileStream aFile = new FileStream(path, FileMode.Create); StreamWriter sw = new StreamWriter(aFile, Encoding.UTF8); ** *string line = sr.ReadLine();* ** //这行有时也会出错 while (line != null) { linenum++; string[] words = line.Split(charArray); int i = 1; foreach (string word in words) { if (i == 1) { sw.Write(word + ' '); i++; } else { string[] wds = word.Split(charArray1); if (wds.Length == 2) { string key = wds[0]; if (idf.Keys.Contains(key)) { double tfidf = (double)idf[key] * (Convert.ToDouble(wds[1])); sw.Write(idfList.IndexOf(key)+ ':'+tfidf +' '); } } } } sw.WriteLine(); ** *line = sr.ReadLine();* ** //问题常常出现在这行 } } sw.Close(); }); } 错误提示根据写入文件时编码方式的不同有所改变。当读取、写入文件用UTF8或者Unicode时,写入和读取的都是乱码,并且line = sr.ReadLine()出错,错误提示为: ** *The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderReplacementFallback'* ** 很是无语,功能相同的代码,为什么ComputeIDF()方法中line = sr.ReadLine()就不出错。我将编码换成Encoding.GetEncoding("GBK")读写文件不会出现乱码,但line = sr.ReadLine()还是出错,相当无语! 还有就是当不用并行处理Parallel.For,而是用for循环时也不出错。 求大侠帮忙,不胜感激!
MFC 文本文件如何实现修改指定行
``` void EditView::WriteInTitle(CString strName, CString lpsz) { CFile WriteFile; WriteFile.Open(strName, CFile::modeWrite | CFile::modeRead | CFile::typeBinary); lpsz = lpsz + "\r\n"; LPCTSTR s = lpsz.GetBuffer(lpsz.GetLength()); WriteFile.Write(s, lpsz.GetLength()*sizeof(CHAR)); WriteFile.Close(); } ``` 以上代码是修改文本第一行内容,但是执行后却把第二行的一部分也覆盖了。 有没有什么一行行修改数据的方法?
Qt 中一段代码看不懂 C++
下面是QT代码中的一部分,有一些小的问题查不到,跪求大佬们回答 不明白的地方都在语句的后面打了问号,名且标号了数字 具体问题在程序后面 目的: 能够起到备份的作用,备份之后的文件是变成压缩包 同时还能加密, 加密的时候还能生成一个文件 ``` // button backup void Vsbak::on_pushButton_clicked(){ // ?1 // The QDateTime class provides date and time functions. // 调用QDatetime里面的一个函数,赋给另一个QDatetime的类型 QDateTime current_date_time = QDateTime::currentDateTime(); // 初始化三个String类型 QString targz, cmd_find, cmd_tar; //RadioButton presents an option button that can be toggled on (checked) or off (unchecked). //Radio buttons are typically used to select one option from a set of options. //Use isChecked() to see if a particular button is selected. if(ui->radioButton->isChecked()){ // 如果radiobutton 被选择了,那么就进行备份,如果没有就只输出时间 // Linux find命令用来在指定目录下查找文件。 // 将目前目录其其下子目录中所有一般文件列出 # find . -type f // Linux grep 命令用于查找文件里符合条件的字符串。 // -v 或 --revert-match : 显示不包含匹配文本的所有行。 // 反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。 // cmd_find = "find ./ -type f | grep -v \'Permission denied\' > TEPLIST";// 这个功能是什么呢// ?2 targz = current_date_time.toString("yyyy-MM-dd_hh.mm.ss") + ".full.tar.gz"; }else{ // 会替换掉前面的百分之1,替换规则是从小到大 int minDiff = get_min(current_date_time); // 为什么我可以从Current_date_time里面获得一个最小的时间 //?3 cmd_find = QString("find ./ -mmin -%1 -type f | grep -v \'Permission denied\' > TEPLIST").arg(minDiff); targz = current_date_time.toString("yyyy-MM-dd_hh.mm.ss") + ".inc.tar.gz"; } // exclude from 是一个配置目录 // tar命令 //-v或--verbose 显示指令执行过程 // --totals 备份文件建立后,列出文件大小 // cmd_tar = QString("tar --verbose --totals --exclude-vcs %1 --files-from=TEPLIST -czf %2/%3").arg(exclude_from).arg(dir_dest).arg(targz);//?4 尤其是后面的exclude--cs 之后,不知道为什么要这样做 qDebug()<< cmd_find << endl << cmd_tar<< endl;// 这里的作用是什么呢,这个<< 在C语言中的作用是什么呢 //?5 QStringList cmd_pipe;// 初始化了一个String目录 cmd_pipe << "-c" << cmd_find; // 说明这个cmd-pipe已经变成了一个linux的cmd命令了 cmd->start("/bin/bash",cmd_pipe); // 开始一个程序 cmd->waitForFinished(); cmd->close(); cmd->start(cmd_tar);// cmd_tar 也变成了一个程序 cmd->waitForFinished(); cmd->close(); cmd->start("rm -f TEPLIST");//?6 这里命令的目的是什么呢? cmd->waitForFinished(); /*********** Encrypting************* // ?7 这里的gpg是个什么样的命令 if(ui->checkBox->isChecked()){ QString cmd_enc; QString cmd_isKey = "gpg -k " + gpg_key; cmd->start(cmd_isKey); cmd->waitForFinished(); QString out = QString::fromLocal8Bit(cmd->readAllStandardOutput()); if(out.isEmpty()) cmd_enc = QString("gpg -c -o %1/%2.gpg %1/%2").arg(dir_dest).arg(targz); else cmd_enc = QString("gpg -e -r %1 -o %2/%3.gpg %2/%3").arg(gpg_key).arg(dir_dest).arg(targz); cmd->start(cmd_enc); cmd->waitForFinished(); if(false == ui->checkBox_2->isChecked()){ QString cmd_rm = QString("rm %1/%2.gpg").arg(dir_dest).arg(targz); cmd->start(cmd_rm); cmd->waitForFinished(); } if(false == ui->checkBox_3->isChecked()){ QString cmd_rm = QString("rm %1/%2").arg(dir_dest).arg(targz); cmd->start(cmd_rm); cmd->waitForFinished(); } } ``` 1. 这一部分要实现的功能到底是个啥,之所以不明白也是因为里面的一些代码不清楚 2. cmd_find = "find ./ -type f | grep -v \'Permission denied\' > TEPLIST";// 这个功能是什么呢,主要是./ 和 后面的 > TEPLIST 看不懂,不知道究竟要干什么 3. 为什么要用getmin呢? int minDiff = get_min(current_date_time); // 为什么我可以从Current_date_time里面获得一个最小的时间 //?3 4. cmd_tar = QString("tar --verbose --totals --exclude-vcs %1 --files-from=TEPLIST -czf %2/%3").arg(exclude_from).arg(dir_dest).arg(targz);//?4 尤其是后面的exclude--cs 之后,不知道巍峨什么要这样做 5. qDebug()<< cmd_find << endl << cmd_tar<< endl;// 这里的作用是什么呢,这个<< 在C语言中的作用是什么呢 //?5 6. cmd->start("rm -f TEPLIST");//?6 这里命令的目的是什么呢? 7. ?7 这里的gpg是个什么样的命令
C#遍历XML文件节点内容
![图片说明](https://img-ask.csdn.net/upload/201807/17/1531796610_332207.png) 如上图所示,我要依次遍历XML文件中,ELEMENTS下,所有子节点IMPLEMENTATION-DATA-TYPE下的内容,显示在dataggridview中,类似如下图。 ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531797158_484409.png) 一行显示一个子节点IMPLEMENTATION-DATA-TYPE的内容, 但是因为部分子节点结构不一样,遇到CATEGORY的值是STRUCT的情况,会有SUB-ELEMENTS,如下图所示。 ![图片说明](https://img-ask.csdn.net/upload/201807/17/1531797347_576700.png) 当中的子节点可以在另外一个datagridview中单独显示,这个怎么判断? 具体不知道怎么写, [xml文件下载地址](https://pan.baidu.com/s/1ucAzUkzrORbnixzd0bw2yw "")
freopen函数只读入文件得一部分
设有n个人围坐一圈并按顺时针方向从1到n编号,从第1个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所剩下一人为止。 Input 输入多行,每行2个数,分别表示n和m. Output 计算每一行中最后剩下这个人的编号. 我的代码: #include <stdio.h> #include <stdlib.h> int main(void) { int n, m; int i; struct link { int number; struct link *next; }; struct link * head = NULL, * p = NULL, * pr; freopen("1.txt", "r", stdin); while(scanf("%d %d", &n, &m) != EOF) { for(i=n; i>0; i--) { p = (struct link *)malloc(sizeof(struct link)); p->number = i; p->next = head; head = p; } for( ; ; ) { if(p->next == NULL) { p->next = head; break; } else { p = p->next; } } p = head; if(m>=2) { while(p->next != p) { for(i=0; i<m-2; i++) { p = p->next; } pr = p->next; p->next = pr->next; p = pr->next; free(pr); } printf("%d\n", p->number); free(p); } else { printf("%d\n", n); } } return 0; } 文件内容: 50 3 5 11 程序结果: 11 ![图片说明](https://img-ask.csdn.net/upload/201603/01/1456844107_723392.jpg)![图片说明](https://img-ask.csdn.net/upload/201603/01/1456844193_516709.png)
asp.net如何获取Datalist中某一行数据?
我是初学ASP.NET,使用Datalist显示学生信息的数据列表,同页面上可以对学生信息进行修改。我想实现的功能是点击Datalist中某行信息时,不用再次搜索数据库,就可以将此行各字段信息读出,存放与相关的文本框中。代码如下: 前台文件Datalist代码: <asp:DataList ID="DataList1" runat="server" onitemcommand="DataList1_ItemCommand" DataKeyField="ID" > <HeaderTemplate> <table > <tr> <td style="width: 40px"> 选择</td> <td style="width: 180px"> 学号</td> <td> 姓名</td> </tr> </table> </HeaderTemplate> <ItemTemplate> <table > <tr> <td style="width: 40px"> <asp:CheckBox ID="chk" runat="server" /> </td> <td style="width: 180px"> <asp:LinkButton ID="btnxh" runat="server" CommandName="edit" CausesValidation="False" Text='<%# Eval("xh") %>'></asp:LinkButton> </td> <td> <asp:LinkButton ID="btnxm" runat="server" CommandName="edit" CausesValidation="False" Text='<%# Eval("xm") %>'></asp:LinkButton> </td> </tr> </table> </ItemTemplate> </asp:DataList> 前台两个文本框: 学号:<asp:TextBox ID="Txtxh" runat="server" Width="80px"></asp:TextBox> 姓名:<asp:TextBox ID="Txtxm" runat="server" Width="160px"></asp:TextBox> 后台相关代码(这里只贴出部分代码): if (e.CommandName == "edit") { int id = int.Parse(DataList1.DataKeys[e.Item.ItemIndex].ToString());//取得当前DataList控件列 Txtxh.Text = ; Txtxm.Text = ; } 这里可以通过ID再次查询数据库获得用户选择行的各列信息,我想能否减少一次数据库查询达到同样效果呢?
C#创建简单数据库,有没有什么方法把CSV文件直接作为数据库,而不是导入数据库
我是一名C#小白,还没有学数据库。 我想实现把EXCEL表格的部分内容显示到dategridview, 我已经把EXCEL转化成了CSV文件格式, 并且会用必要的sql查询语句了, 也创建好sqlconnectioSQLcommand,会用ExecuteReader( ),SQLDateReader( ),用于读 取,也知道怎么给Dategridview添加行, 但是还是不能实现我想要的功能 似乎还需要创建ODBC接口来连接数据库,我创建的时候发现要用到数据库程序 SQL sever 之类的 把CSV文件导入到里面 但是我电脑上没有 有没有什么不用下载数据库程序 直接把CSV文件当作数据库的方法? 还有我的做法有没有什么问题? 求详细解答
这是linux的makefile的部分内容 运行make的时候 报错第17行 即head main kernel mm fs lib 报错内容是makefile17 ***遗漏分割符 。停止 请教大神
# # if you want the ram-disk device, define this to be the # 如果你要使用RAM 盘设备的话,就 # size in blocks. # 定义块的大小。 # RAMDISK = #-DRAMDISK=512 AS86 =as86 -0 -a # 8086 汇编编译器和连接器,见列表后的介绍。后带的参数含义分别 LD86 =ld86 -0 # 是:-0 生成8086 目标程序;-a 生成与gas 和gld 部分兼容的代码。 AS =gas # GNU 汇编编译器和连接器,见列表后的介绍。 LD =gld LDFLAGS =-s -x -M # GNU 连接器gld 运行时用到的选项。含义是:-s 输出文件中省略所 # 有的符号信息;-x 删除所有局部符号;-M 表示需要在标准输出设备 # (显示器)上打印连接映象(link map),是指由连接程序产生的一种 # 内存地址映象,其中列出了程序段装入到内存中的位置信息。具体 # 来讲有如下信息: head main kernel mm fs lib bootsect setup system Build 工具 内核映象文件 Image 2.8 linux/Makefile 文件 # ? 目标文件及符号信息映射到内存中的位置; # ? 公共符号如何放置; # ? 连接中包含的所有文件成员及其引用的符号。 CC =gcc $(RAMDISK) # gcc 是GNU C 程序编译器。对于UNIX 类的脚本(script)程序而言, # 在引用定义的标识符时,需在前面加上$符号并用括号括住
将含有指针的结构体写入文件,关闭程序后如何再次读写
从文件中读出一篇英文文章,若干行,每行最多不超过80个字符。首次运行都不会出现错误,关闭后再次读写文件就会出现错误 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> #include <fstream.h> #define N 100 typedef struct lnode { char data; struct lnode *next; }Linklist; Linklist *Par[N]; struct paragraph { char *para;//因为开始不知道将会写入多少字符,所以用指针动态解决 int count;//每段字符个数 }; struct paragraph *par; FILE *fp; int k=0;//记录段数 int i=0; //存入文件的仅仅是储存链表的数据部分,需要时,从文件中提取数据,重新建立一个新的链表。 //每一段内容由单链表构成,每一个表头结点指向单链表的第一个节点,所有表头结点又组成一个数组 void First()//用来得知之前已写入文件有多少段落 { if((fp=fopen("D:\\c\\a.txt","r"))==NULL) { printf("没有该文件\n"); return; } else { fp=fopen("D:\\c\\a.txt","r"); for(i=0;i<N;i++) { if(fread(&par[i],sizeof(struct paragraph),1,fp)!=NULL) //if(fread(&par[i].count,sizeof(int),1,fp)!=0) { printf("%d ",par[i].count); k++; } else { break; } } printf("\n**已存在%d段内容\n",k); } fclose(fp); } void Write() { int n=0;//记录每段字符数 int n1=0; int n2=0; int n3=0; printf("请输入文章:\n"); char c; Linklist *L; Linklist *p; Linklist *s; L=(Linklist *)malloc(sizeof(Linklist)); while(1)//只要未输入Ctrl+E,即不断输入字符 { c=getchar(); if(c!=10 && c!=5)//继续写入当前段落的内容 { n++; s=(Linklist *)malloc(sizeof(Linklist)); s->data=c; s->next=NULL; if(n==1) { L->next=s; Par[k]=L; } else { p->next=s; } p=s; } if((c==10||c==5)&& n!=0) { n1=n/80;//行数即‘\n’数 n2=n+n1; n3=n2+5; par[k].para=(char *)malloc(n3*sizeof(char)); par[k].count=(int)malloc(sizeof(int)); p=Par[k]->next; for(i=0;i<n2;i++)//将字符传入数组 { if((i+1)%81==0) { par[k].para[i]='\n'; } else { par[k].para[i]=p->data; p=p->next; } } par[k].count=n; fp=fopen("D:\\c\\a.txt","a+"); fwrite(&par[k],sizeof(struct paragraph),1,fp); //fwrite(par[k].para,n2*sizeof(char),1,fp); //fwrite(&par[k].count,sizeof(int),1,fp); fprintf(fp,"\n"); fclose(fp); k++; n=0; if(c==5)//Ctrl+E提示文章输入结束 { printf("文章输入完毕!\n"); break; } } } } void Read() { int j=0; int n; int n1; int n2; int n3; fp=fopen("D:\\c\\a.txt","r"); for(i=0;i<=k;i++) { n=par[i].count; n1=n/80; n2=n+n1; n3=n2+5; fread(&par[k],sizeof(struct paragraph),1,fp); // fread(par[i].para,n3*sizeof(char),1,fp); for(j=0;j<n2;j++) { if((j+1)%80==0) { j++; } else { printf("%c",par[i].para[j]); } } printf("\n"); } for(i=0;i<k;i++) { printf("%d ",par[i].count); } fclose(fp); printf("\n"); } void main() { par=(struct paragraph *)malloc(N*sizeof(struct paragraph)); First(); printf("写入请按1\n"); printf("读出请按2\n"); printf("退出请按0\n"); int a; printf("请选择:"); scanf("%d",&a); while(a!=0) { switch(a) { case 0:break; case 1:Write(); break; case 2:Read(); break; default:printf("错误!\n"); } printf("请选择:"); scanf("%d",&a); } }
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
程序员,职场上请远离这种人!
对有些职场人来讲,甩锅就是一种生存手段。01.从大学打篮球说起上大学的时候喜欢打篮球,然后我又特别喜欢抢篮板,经常是跳起来的时候没事,落下来的时候偶尔会踩到别人的脚上,于...
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
一个读研让我损失了一百万的真实故事
关注我!只要10分钟,包你学会数据分析 毕业后,应该就业还是考研? 我刚出国留学那会儿,就惊讶的发现,外国local95%都不会选择读研 他们说,硕士学费很贵,时间宝贵,老板不认,所以很费 当几乎所有人都是本科学历时,硕士学历反而像个异类 在老板眼里,三年硕士远远不如3年的工作经验实用 他们甚至专门为拒绝高学历者发明了一个词,叫overoccupie...
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给袈...
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
【图解】记一次手撕算法面试:字节跳动的面试官把我四连击了
字节跳动这家公司,应该是所有秋招的公司中,对算法最重视的一个了,每次面试基本都会让你手撕算法,今天这篇文章就记录下当时被问到的几个算法题,并且每个算法题我都详细着给出了最优解,下面再现当时的面试场景。看完一定让你有所收获 一、小牛试刀:有效括号 大部分情况下,面试官都会问一个不怎么难的问题,不过你千万别太开心,因为这道题往往可以拓展出更多有难度的问题,或者一道题看起来很简单,但是给出最优解,确实很...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
杭漂程序员2019的心路历程,还不起助学贷款,交不起房租,披荆斩棘终雨过天晴
一个杭漂2019的心酸历程,一路披荆斩棘终于还是雨过天晴。
我采访了同事,让他掏出了每天都会浏览的干货网站
前言只有光头才能变强。文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y在周六的晚上,我日常去到公司写文章。想写...
Java知识体系最强总结(2020版)
更新于2019-12-15 10:38:00 本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。 文章目录...
相关热词 c#如何定义数组列表 c#倒序读取txt文件 java代码生成c# c# tcp发送数据 c#解决时间格式带星期 c#类似hashmap c#设置istbox的值 c#获取多线程返回值 c# 包含数字 枚举 c# timespan
立即提问