c++ - 如果我使用 ./program_name 执行我的程序,如何在 C++ 中获取文件名
如果我正在执行这样的程序: ./program_name<file_name 如何在 c++ 中获取文件名。
我尝试在主文件和打开文件中使用argue[1],例如。
int main(int argc, char *argv[]){
ifstream file;
file.open(a
问题描述
如果我正在执行这样的程序: ./program_name<file_name 如何在 c++ 中获取文件名。
我尝试在主文件和打开文件中使用argue[1],例如。
int main(int argc, char *argv[]){
ifstream file;
file.open(argv[1],ios::in);
}
它没有打开
双冒号::
命名空间运算符也可以用作消息发送运算符。换句话说,
foo.bar
也可以写成
foo::bar
除非没有。
特别.
是始终是消息发送。::
通常是命名空间查找,除非不可能。这意味着,例如,您不能调用以大写字符开头的消息,除非您还传递了参数列表。
foo = Class.new do
def BAR; :method end
BAR = :constant
end
foo.BAR #=> :method
foo::BAR #=> :constant
foo::BAR() #=> :method
::
也可以用于消息发送的事实是历史上的好奇,并且在大多数样式指南中被禁止,除了“类工厂”,即返回类的方法。想象一下这样设置的 Web 框架:
module Controller
def self.R(path)
Class.new(AbstractController) do
# a bunch of methods for dealing with routing to `path`
end
end
end
class IndexController < Controller::R '/index.html'
def get
render 'Welcome'
end
end
在这种情况下,在某些风格指南中,这样写是可以接受的,Controller::R
因为尽管R
它是一个方法,但它返回一个类,所以它有点像一个。
但这是某些 DSL 的特殊情况,仅在某些样式指南中允许。大多数样式指南不允许::
消息发送,因为它与 冗余.
,因为它已经具有另一种不同的含义(命名空间解析),并且因为它的行为并非.
在所有情况下都如此。
那么使用点(。)和双冒号(::)运算符访问类方法有什么区别?
一方面,您可以说没有区别,因为当用作消息发送运算符时,它们都做完全相同的事情。
另一方面,语法有所不同,即不是消息发送,而是完全不同的名称空间查找。from ,这是一条消息发送。foo::BAR
foo.BAR
解决方案
<
运算符输入中的cat
文件,然后您尝试在代码中从参数中获取它。如果要使用输入:
#include <string>
int main() {
std::string data;
// here you read all the file
std::getline(std::cin, data);
}
推荐阅读
如果我正在执行这样的程序: ./program_name<file_name 如何在 c++ 中获取文件名。
我尝试在主文件和打开文件中使用argue[1],例如。
int main(int argc, char *argv[]){
ifstream file;
file.open(a
问题描述
如果我正在执行这样的程序: ./program_name<file_name 如何在 c++ 中获取文件名。
我尝试在主文件和打开文件中使用argue[1],例如。
int main(int argc, char *argv[]){
ifstream file;
file.open(argv[1],ios::in);
}
它没有打开
双冒号::
命名空间运算符也可以用作消息发送运算符。换句话说,
foo.bar
也可以写成
foo::bar
除非没有。
特别.
是始终是消息发送。::
通常是命名空间查找,除非不可能。这意味着,例如,您不能调用以大写字符开头的消息,除非您还传递了参数列表。
foo = Class.new do
def BAR; :method end
BAR = :constant
end
foo.BAR #=> :method
foo::BAR #=> :constant
foo::BAR() #=> :method
::
也可以用于消息发送的事实是历史上的好奇,并且在大多数样式指南中被禁止,除了“类工厂”,即返回类的方法。想象一下这样设置的 Web 框架:
module Controller
def self.R(path)
Class.new(AbstractController) do
# a bunch of methods for dealing with routing to `path`
end
end
end
class IndexController < Controller::R '/index.html'
def get
render 'Welcome'
end
end
在这种情况下,在某些风格指南中,这样写是可以接受的,Controller::R
因为尽管R
它是一个方法,但它返回一个类,所以它有点像一个。
但这是某些 DSL 的特殊情况,仅在某些样式指南中允许。大多数样式指南不允许::
消息发送,因为它与 冗余.
,因为它已经具有另一种不同的含义(命名空间解析),并且因为它的行为并非.
在所有情况下都如此。
那么使用点(。)和双冒号(::)运算符访问类方法有什么区别?
一方面,您可以说没有区别,因为当用作消息发送运算符时,它们都做完全相同的事情。
另一方面,语法有所不同,即不是消息发送,而是完全不同的名称空间查找。from ,这是一条消息发送。foo::BAR
foo.BAR
解决方案
<
运算符输入中的cat
文件,然后您尝试在代码中从参数中获取它。如果要使用输入:
#include <string>
int main() {
std::string data;
// here you read all the file
std::getline(std::cin, data);
}