解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。
本文是原创文章,未经允许,请勿转载。
原来程序中是通过运行exe,然后加上参数,然程序运行起来的。也就是main(int argc, char** argv)这里是通过argv参数是从命令行
传过来的。现在想改为在main函数里面给出这个参数,其实我做的是load_image(img, argv[1]);这个函数。然后我希望argv[1]参数是从txt文本
取到的。所以我写了如下程序
///////////////////// 把1.txt文件中的所有的图片的路径都push_bach到image_path里面 /////////////////////
ifstream in("1.txt");
string filename;
string line;
std::vector<string> image_path;
if (in) // 有该文件
{
while (getline(in, line)) // line中不包括每行的换行符
{
cout << line << endl;
image_path.push_back(line);
}
}
else // 没有该文件
{
cout << "没有输入的图片的路径!" << endl;
} cout<<"image_path[0]= "<<image_path[]<<endl;
cout<<"image_path[0] type"<<typeid(image_path[]).name()<<endl; matrix<rgb_pixel> img;
string image_path0_str = image_path[];
cout<<"image_path0_str="<<image_path0_str<<endl; //load_image(img,image_path[0]);
string s_path = "/home/student/dlib-master/examples/faces/yangmi_liudehua.jpg";
cout<<"s_path ="<<s_path<<endl; load_image(img,image_path0_str);
image_path0_str和s_path两个变量进行cout出来的都是 /home/student/dlib-master/examples/faces/yangmi_liudehua.jpg
那我就奇怪了,但是为什么load_image(img,s_path);这样可以load成功,而这个load_image(img,image_path0_str);不?
所以我
int a= image_path0_str.size();
int b= s_path.size();
if(a==b)
{
cout<<"这两个变量长度相等"<<endl;
}
else
{
cout<<"这两个变量长度不相等"<<endl;
} if(s_path ==image_path0_str)
{
cout<<"这两个变量相等"<<endl;
}
else
{
cout<<"这两个变量不相等"<<endl;
}
同事提示我看看长度相等不,有没有空字符之类的。甚至字符串的字节码都可以打出来进行对比,以便发现问题。所以又写了这个,输出的结果是这两个变量长度不相等, 这两个变量不相等。同事提示我,可能是编码的问题。这我就想起来了。我的1.txt是从windows拷贝到Ubuntu1404的。然后果断删除,直接在Ubuntu下建了个1.txt然后输入

这样子之后,我就可以 load_image(img,image_path0_str);成功了。这可是耽搁了我一天的问题。解决了好开心的。
解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。的更多相关文章
- VC++中的int main(int argc, char argv[])是什么意思
这是C/C++的一重要函数,叫主函数.无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数:程序执行时就是从这个函数进入的.由于问得比较笼统,如果你想知道详细情况的话,发给你一个网友的求助 ...
- int main( int argc, char **argv)
1.参数 (有时参数是void) argc是程序运行时参数个数 argv是存储参数的数组,可以用char* argv[],也可以用char **argv. 例如编译一个hello.c的程序 1 #in ...
- int main(int argc,char* argv[])参数详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[] ...
- int main(int argc, char** argv) 以及CommandLineParser
参考链接: 关于int main(int argc, char** argv) http://blog.csdn.net/liuhuiyi/article/details/8239303 http:/ ...
- c/c++中int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[ ]) argv为指针的指针 argc为整数 char **argv or: char *argv[ ] or: char argv[ ][ ...
- opencv中 int main(int argc,char* argv[])详解
opencv中 int main(int argc,char* argv[])详解 argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 ...
- main(int argc, char *argv[])详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int ar ...
- int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[]) argv为指针的指针 argc为整数 char **argv or: char *argv[] or: char argv[][] m ...
- 关于int main(int argc,char* argv[])详解
平时在VS的环境下,主函数总会看到这两个参数,今天突然很想知道这两个参数的原理以及作用,因此查了下资料.真心受教了. 下面的博文是在百度空间看一位大神的,原文链接:http://hi.baidu.co ...
随机推荐
- 【转】flannel网络的VXLAN及host-gw
http://www.fly63.com/article/detial/1738 VXLAN是Linux内核本身支持的一种网络虚拟化技术,是内核的一个模块,在内核态实现封装解封装,构建出覆盖网络,其实 ...
- java发送http的get、post请求【备忘】
类 package com.dsideal.kq.Controller; import java.io.BufferedReader; import java.io.IOException; impo ...
- innobackupex做MySQL增量备份及恢复
http://www.cnblogs.com/paul8339/p/6731688.html
- codeforces div2 C题思路训练【C题好难,我好菜】
1017C The Phone Number: 构造数列使得LIS和LDS的和最小,定理已知LIS=L,LDS=n/L的向上取整,根据样例可以得到设置L=根号n,构造方法如样例 截断法构造,不用考虑边 ...
- ios线程和GCD和队列同步异步的关系
1.什么是进程? 进程是指在系统中正在运行的一个应用程序.比如同时打开QQ.Xcode,系统就会分别启动2个进程.截图 2.什么是线程? 1).一个进程要想执行任务,必须得有线程(每一个进程至少要有一 ...
- Android开发——使用Jword生成本地word文档
本文主要介绍如何使用Jword生成本地word文档,这里涉及到Jword的使用技巧,本文给出相应的代码,需要的朋友可以参考下. 为什么使用Jword呢?因为IText .Freemark在安卓平台上压 ...
- net core体系-web应用程序-3项目结构、配置文件详解
一.应用程序文件结构 如下图所示,相比于Asp.Net项目,在新建的Asp.Net Core项目中,没有了Global.asax以及Web.config这样的文件,但多了几个其他主要的文件,它们分别为 ...
- Python中元类
元类(metaclass) 简单地说,元类就是一个能创建类的类,而类class 是由type创建的,class可以创建对象 type与object的关系详见:python中type和object 1. ...
- Python traceback 模块,追踪错误
Python traceback 模块,追踪错误 import traceback try: your code except: traceback.print_exc()
- vee-validate校验demo
//太长了,把异步校验放到前面吧: VeeValidate.Validator.extend('checkLoginName',{ getMessage:function () { return &q ...